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$paramsarray()

何か不足していますか?

編集: (xml から) ループで構築された$this->mainMenu複数の から構成される配列です。$link

$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 の場合、「項目」配列の形式は次のとおりです。

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 に答える