Yii CMenu活动项目未设置

时间:2012-07-09 00:02:30

标签: php yii

我正在使用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;
}

1 个答案:

答案 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')),