Yii2 NavBar 强制加载额外的 Bootstrap

Yii2 NavBar forcing load of extra Bootstrap

我正在尝试将 Start Bootstrap 的 Heroic Features 模板改编为 Yii2。

heroic-features.css 包括 Bootstrap & 我喜欢尽可能使用 CDN,所以我覆盖了 YiiAssetJqueryAssetBootstrapAsset .

一切看起来都很好,直到我包含 NavBar。

frontend/views/layouts/main.php我拥有一切bootstrap5...

use common\widgets\Alert;
use yii\bootstrap5\Breadcrumbs;
use yii\bootstrap5\Html;
use yii\bootstrap5\Nav;
use yii\bootstrap5\NavBar;

p2m\demo\assets\ThingsDemoAsset::register($this);
p2m\assets\BootstrapIconsAsset::register($this);

提供我想要的...

<link href="/assets/ffcb6986/css/heroic-features.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" integrity="sha384-tKLJeE1ALTUwtXlaGjJYM3sejfssWdAaWR2s97axw4xkiAdMzQjtOjgcyw0Y50KU" crossorigin="anonymous">

...

<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ" crossorigin="anonymous"></script>
<script src="/assets/b94ae250/yii.js"></script>
<script src="/assets/ffcb6986/js/heroic-features.js"></script></body>

只要我添加任何东西 NavBar,甚至完全是空的,到 frontend/views/layouts/main.php...

    NavBar::begin();
    NavBar::end();

我得到这个输出...

<link href="/assets/ffcb6986/css/heroic-features.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" integrity="sha384-tKLJeE1ALTUwtXlaGjJYM3sejfssWdAaWR2s97axw4xkiAdMzQjtOjgcyw0Y50KU" crossorigin="anonymous">
<link href="/assets/51c6396f/css/bootstrap.css" rel="stylesheet"> <!-- << this! -->

...

<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ" crossorigin="anonymous"></script>
<script src="/assets/b94ae250/yii.js"></script>
<script src="/assets/ffcb6986/js/heroic-features.js"></script>
<script src="/assets/51c6396f/js/bootstrap.bundle.js"></script></body> <!-- << this! -->

<!-- << this! --> 插入以突出显示额外的输出。

是什么导致额外的 Bootstrap 加载?

不要使用 bootstrap 导航栏,它会在内部注册 bootstrap 插件资产。您还需要自定义导航栏。

Yii2 Bootstrap NavrBar

public function run()
{
    $tag = ArrayHelper::remove($this->containerOptions, 'tag', 'div');
    echo Html::endTag($tag);
    if ($this->renderInnerContainer) {
        echo Html::endTag('div');
    }
    $tag = ArrayHelper::remove($this->options, 'tag', 'nav');
    echo Html::endTag($tag);
    BootstrapPluginAsset::register($this->getView());
}