yii2 Nav::widget() 和 Menu::widget()
Nav::widget http://www.yiiframework.com/doc-2.0/yii-bootstrap-nav.html
Menu::widget() http://www.yiiframework.com/doc-2.0/yii-widgets-menu.html#$items-detail
这两个widget都是显示菜单的,或者说可以这么干,使用之中返现有个很明显的不同:
Nav 的子菜单或者子项目默认使用的ul样式是'dropdown-menu',Menu 默认只用一个display:block。Nav的UL标签的样式要该需要改api才会变,目前我还不知道怎么不改api就可以修改UL标签的class,可以添加,但是原来的dropdown-menu 是在的。
Nav 给子项目添加样式方法
1 [ 2 'label' => 'xx管理', 3 'url' => ['url0'], 4 'options'=>['class'=>'accordion'], 5 'items' => [ 6 [ 7 'label' => '管理xx', 'url' => ['ulr1'], 8 ], 9 [ 10 'label' => '添加xx', 'url' => ['url2'] 11 ], 12 ], 13 ],
在11行后添加
'dropDownOptions'=>['class'=>'nav nav-pills nav-stacked'],
可以修改子items的ul样式,如图,dropdown-menu还是在的
Menu::widget有个 submenuTemplate 属性,可以通过修改该属性来自定义子项目UL标签的样式
1 echo Menu::widget([ 2 'options' => ['class' => 'nav nav-pills nav-stacked main-menu'], 3 'items' => $menuItems, 4 'submenuTemplate' => "\n<ul class='nav nav-pills nav-stacked' role='menu'>\n{items}\n</ul>\n", 5 ]);
Menu::widget是一定要有'label'属性的,不然是会报错的,但是Nav就可以直接在两个子项目间写li标签之类的,看官方文档。