Yii2 如何防止自动加载任何小部件的资产包?

Yii2 How to prevent autoloading of assetsbundle of any widget?

我正在使用\yii\jui\AutoComplete

它会自动加载 JuiAssets。有什么办法可以防止加载 JuiAssets 的文件吗?我想使用我自己的文件版本。在之前的 Yii Framework 版本中,我们可以选择阻止加载任何小部件的关联 css 和 js 文件。

有没有办法在不编辑核心文件的情况下更改任何 jui Widget 的 AssetBundle?

是的,您可以轻松自定义任何 AssetBundle 以满足您的需求:

1) 通过应用程序配置:

return [
    'components' => [
        'assetManager' => [
            'bundles' => [
                'yii\jui\JuiAsset' => [
                    'sourcePath' => null, // do not publish the bundle
                    'js' => [
                        // replace published js file here
                    ],
                ],
            ],
        ],
    ],
];

2) 你可以通过assetManager组件在运行时做同样的事情:

Yii::$app->assetManager->bundles['yii\jui\JuiAsset'] = [
    'sourcePath' => null,
    'js' => [...],
];

官方文档:

请注意,jQuery UI 组件的注册逻辑已在 this commit 中更改。所以Autocomplete等没有单独的asset bundle,他们都用yii\jui\JuiAsset.