Yii2 Как включить активы по умолчанию только в определенных модулях

Я использую базовое приложение yii2, я отключил boostrap css и js в конфигурации web.php, но я хочу включить его внутри модуля с именем admin.

Я попытался добавить вот так, для раздела компонентов в config.php в папке модуля администратора, но не повезло!

'assetManager' => [
       'bundles' => [
           'yii\bootstrap\BootstrapPluginAsset' => [
                'js'=> ['js/boostrap.js']
            ],
           'yii\bootstrap\BootstrapAsset' => [
               'css' => ['css/boostrap.min.css']
           ]
        ],
    ],

Как я могу достичь этого?


person xoons    schedule 09.12.2014    source источник


Ответы (2)


В методе init() вашего модуля вы можете переопределить набор ресурсов exist, как показано ниже:

public function init() {
    \Yii::$app->assetManager->bundles['yii\bootstrap\BootstrapAsset'] = [
        'css' => ['css/bootstrap_NEW.css']
    ];
    parent::init();
}

В приведенном выше примере мы переопределяем yii\bootstrap\BootstrapAsset файл CSS в нашем модуле. Итак, в этом модуле используется bootstrap_NEW.css вместо значения по умолчанию.

Обратите внимание, что вы можете сделать это в приложении глобально, а не специально в методе init() модуля. Это было просто предложение решить этот конкретный случай.

person Ali MasudianPour    schedule 09.12.2014

Для этого вам следует использовать пакеты ресурсов, не нужно изменять assetsManager.

Чтобы отключить Bootstrap, просто удалите его из $depends в AppAsset :

public $depends = [
    'yii\web\YiiAsset',
];

Создайте класс ModuleAsset в своем модуле:

class ModuleAsset extends \yii\web\AssetBundle
{
    public $depends = [
        'yii\bootstrap\BootstrapAsset',
    ];
}

Обязательно зарегистрируйте его в представлениях вашего модуля (вы можете использовать собственный макет):

ModuleAsset::register($this);

Подробнее: http://www.yiiframework.com/doc-2.0/guide-structure-assets.html

person soju    schedule 09.12.2014