【问题标题】:Yii2 ActiveFormAsset dependenciesYii2 ActiveFormAsset 依赖
【发布时间】:2016-08-11 14:51:06
【问题描述】:

我放弃了 Yii2 捆绑的 jQuery 和 Bootstrap 资产,以换取我使用 npm/browserify 捆绑自己的资产所以第一步是通过配置从 yii\web\YiiAsset 中删除 jQuery 和 Bootstrap:

'components' => [
        'assetManager' => [
            'bundles' => [
                'yii\web\JqueryAsset' => [
                    'js'=>[]
                ],
                'yii\bootstrap\BootstrapPluginAsset' => [
                    'js'=>[]
                ],
                'yii\bootstrap\BootstrapAsset' => [
                    'css' => [],
                ],

            ],
        ],
...
]

很明显,我想将它放在页脚中,但它需要在任何其他资产之前加载,以便它们可以使用 jQuery。

这是我的 AssetBundle:

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

    public $depends = [
        'app\assets\CustomAssets',
        'yii\web\YiiAsset',
    ];
}

我的 CustomAssets 包(包含我自己的 JS 和 CSS)首先在 depends 中声明,我认为这会工作,但我在页面上也有一个 ActiveForm,它注册了 @ 987654321@,它依赖于各种 Yii 资产。这是我嵌入该表单的地方:

<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>
            ...
<?php ActiveForm::end(); ?>

有没有一种方法可以覆盖ActiveFormAsset 上的depends,使其也取决于我的脚本?

【问题讨论】:

    标签: yii2


    【解决方案1】:

    由于资产包依赖项是可传递的,所以我想到以同样的方式覆盖 Jquery 和 Bootstrap 包的配置,我可以像这样覆盖 yii\web\YiiAsset 的配置:

    'components' => [
        'assetManager' => [
            'bundles' => [
                ...
                'yii\web\YiiAsset' => [
                    'depends' => [
                        'app\assets\CustomAssets',
                    ],
                 ],
            ],
        ],
        ...
    ]
    

    因此,当 ActiveFormAsset 尝试加载 yii\web\YiiAsset 时,它会处理对我自己的脚本/样式的依赖,并且还涵盖任何其他加载的资产并可能依赖于 yii\web\YiiAsset。

    【讨论】:

      【解决方案2】:

      我所做的是替换运送的资产,而不是杀死它们:

          'bundles'            => [
              'yii\bootstrap\BootstrapAsset'       => ['class' => 'common\assets\BootstrapAsset',],
              'yii\bootstrap\BootstrapPluginAsset' => ['class' => 'common\assets\BootstrapPluginAsset',],
          ],            
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-17
        • 1970-01-01
        相关资源
        最近更新 更多