我正在使用Yii的CMenu以下列方式生成菜单:
$this->widget('zii.widgets.CMenu', array(
'items'=>$this->mainMenu,
'lastItemCssClass'=>'mitem-last',
'activeCssClass'=>'mitem-active',
'activateParents'=>true
));
我在第index.php?r=site/home
页上显示此菜单,并希望以下菜单项具有mitem-active
类:
[2] => Array
(
[label] => test
[url] => /index.php?r=site/home
)
但该项目呈现为
<li><a href="/index.php?r=site/home">test</a></li>
如果我没有弄错index.php?r=site/home
有路由site/home
(也是$this->route
的输出),事实上链接是使用
$link['url']=$this->createUrl(current($mitem['url']),$params);
其中current($mitem['url'])
输出site/home
和$params
只是array()
。
我错过了什么吗?
编辑: $this->mainMenu
是一个由循环中构建的多个$link
组成的数组(来自xml)。
$this->mainMenu = array();
foreach($xml->mitem as $mitem){
$link=array();
... compute some values like $link['label'], $params etc ...
$link['url']=$this->createUrl(current($mitem['url']),$params);
$this->mainMenu[]=$link;
}
答案 0 :(得分:3)
对于CMenu,“items”数组格式为:
array(
array('label'=>'Home', 'url'=>array('site/index')),
array('label'=>'About', 'url'=>array('/site/page', 'view'=>'about')),
array('label'=>'Contact', 'url'=>array('/site/contact')),
)
不
array(
array('label'=>'Home', 'url'=>'index.php?r=site/index'),
array('label'=>'About', 'url'=>'index.php?r=site/page&page=about'),
array('label'=>'Contact', 'url'=>'index.php?r=site/contact'),
)
如果您的商品如下所示:
array('label'=>'Home', 'url'=>'index.php?r=site/home'),
它不起作用。 你的项目必须是这样的:
array('label'=>'Home', 'url'=>array('site/home')),