我有一个名为reports
的视图,我想显示一个引导下拉列表。
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Dropdown Example
<span class="caret"></span></button>
<ul class="dropdown-menu">
<li><a href="#">HTML</a></li>
<li><a href="#">CSS</a></li>
<li><a href="#">JavaScript</a></li>
</ul>
</div>
它不仅仅适用于此视图。我发现在这个视图中有多个bootstrap js文件。
<script src="/~folder/project/web/theme/bootstrap/js/bootstrap.min.js"></script>
<script src="/~folder/project/web/assets/db70fa5c/js/bootstrap.js"></script>
我如何删除其中的一个?
我尝试创建一个新的RegisterAsset.php文件,其中我省略了脚本
<script src="/~folder/project/web/theme/bootstrap/js/bootstrap.min.js"></script>
但仍然在视图中看到它。我该怎么办?
答案 0 :(得分:2)
如果一切都被正确指定,这是不可能的。 Yii2会检测到您正在两次注册同一资产,并且只包含一次。在你的例子中,第二个(不是缩小的)似乎以正确的方式注册,而第一个从主题文件夹注册。
看起来您正在使用扩展程序或某个主题,它使用自己的资产文件(以及自己的引导程序文件!)从非资产文件夹(web/theme/...
)注册。不是真的按照规范......;)
找出哪个资产正在注册您的第二个bootstrap文件(主题文件夹中的那个)。现在,您可以通过全局配置文件覆盖此资产的配置。为此,请先阅读docs,然后在config/web.php
中执行以下操作:
'assetManager'=>[
//...
'bundles'=>[
'namespace\to\your\failing\asset\Bundle'=>[
//add all css-files of the bundle except the duplicate one here
'js'=>['js/fileA.js', 'js/fileB.js'],
],
],
//...
],
现在指定包的js文件,除了重复的文件。现在这会覆盖此捆绑包的asset-config,因此应解决您的问题,而不会从视图中排除某些内容(这将违背资产管理的基本概念)。
查找失败的资产包应该很容易。只需在您的主题中查找一个类yii\web\AssetBundle
并在其bootstrap.min.js
- 数组中包含文件$js
。