0

我正在使用 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是一个由多个 s 组成的数组,$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;
}
4

1 回答 1

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')),
于 2012-07-09T00:46:43.700 回答