1 Вопрос: Порядок загруженных активов не соответствует файлам активов

вопрос создан в Thu, May 2, 2019 12:00 AM

Для использования функции всплывающей подсказки в bootstrap v3.4.1 с YII2.0.18 необходимо изменить порядок загруженных javascripts. Я не могу это исправить.

После обновления до YII2.0.18 порядок загруженных javascripts изменяется. Ранее скрипты загружались в следующем порядке:

  • JQuery-ui.js
  • bridge.js
  • bootstrap.js

Теперь это выглядит следующим образом:

  • bootstrap.js
  • JQuery-ui.js
  • bridge.js

Из-за этого изменения сценарий bridge.js не может переписать имя функции всплывающей подсказки сценария JqueryUI до загрузки bootstrap.js.

Я использую следующую команду в bridge.js:

$.widget.bridge('uitooltip', $.ui.tooltip);

Файл AppAsset:

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/main.css',
        'https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css',
        'css/multi-select.css',
    ];
    public $js = [
        'js/main.js',
        'js/invoiceLines.js',
        'js/rememberTabs.js',
        'js/jquery.multi-select.js'
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'app\assets\BridgeAsset',
        'yii\bootstrap\BootstrapAsset',
        'yii\bootstrap\BootstrapPluginAsset',
    ];
}

И файл BridgeAsset

class BridgeAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';

    public $js = [
        'js/bridge.js'
    ];
    public $depends = [
        'yii\web\JqueryAsset',
        'yii\jui\JuiAsset',
    ];
}

Я не могу изменить порядок загруженных сценариев, если не поэкспериментировал с зависимостями в файлах ресурсов.

    
0
  1. BootstrapPluginAsset зависит от BootstrapAsset, поэтому вам не нужно явно добавлять оба. То же самое для JuiAsset и JqueryAsset. Возможно, вы могли бы добавить свой собственный BootstrapAsset, который загружает файлы начальной загрузки и зависит от BridgeAsset - таким образом, его следует добавить после моста.
    2019-05-03 09: 08: 46Z
1 ответ                              1                         

Наконец-то нашел ответ, в web.php я добавил следующее в assetManager:

'bundles' => [
                'yii\bootstrap\BootstrapAsset' => [
                    'depends' => [
                        'yii\jui\JuiAsset',
                    ],
                ],
            ],

Это делает JqueryUI зависящим от ресурсов начальной загрузки.

    
0
2019-05-07 07: 21: 37Z
источник размещен Вот