我在Yii工作,突然陷入了这种困境。问题是,在此之前我使用的是CMenu,在使用Bootstrap时,我使用的是TbMenu。
然而,在当前的这个项目中,我们创建了一个完全不同的菜单,里面有很多新的跨距和div,所以将它与当前的TbMenu或Cmenu集成起来非常困难,所以我们提出了HTML菜单就像在主要布局中一样。但是,现在当我访问任何视图时,它应该在菜单列表项中放置适当的“活动”类。
TbNavbar和CMenu能够自动实现这一点,但是我无法为我的观点实现它。
例如:
我把它作为我的导航栏:
所以当我像这样访问“someController / actionSomthing”时:
www.localhost.com/someController/actionSomthing
<nav>
<ul id="blah">
<li class="active"><a href ="#" >Something</a></li>
<li><a href ="#" >Something else</a></li>
<li><a href ="#" >another something</a></li>
</ul>
</nav>
所以基本上当我访问特定的动作/控制器时:它应该将class =“active”放在li标签中。
请帮忙。
此致
答案 0 :(得分:4)
如果你想要一个JS / jQuery解决方案,你可以试试这个:
$(function() {
var loc = window.location.href;
$('#blah li').each(function() {
var link = $(this).find('a:first').attr('href');
if(loc.indexOf(link) >= 0)
$(this).addClass('active');
});
});
答案 1 :(得分:1)
我正在将此类用于li
个项目:
class="<?php echo (Yii::$app->controller->route == 'site/index') ? 'active' : '' ?>"
您也可以使用Yii::$app->controller->id
进行直接链接。
答案 2 :(得分:0)
TbMenu
继承自CMenu
。在当前项目中使用active
:
<?php $this->widget('bootstrap.widgets.TbNavbar', array(
'collapse'=>true,
'htmlOptions'=>array('role'=>'navigation'),
'items'=>array(
array(
'class'=>'bootstrap.widgets.TbMenu',
'items'=>array(
array(
'label'=>'Consultas',
'url'=>array('/someController/actionSomthing'),
'visible'=>Yii::app()->user->checkAccess('someController'),
'active'=>Yii::app()->controller->id=='someController'
),
),
),
),
)) ?>