我所做的是在我的 Controller (AdminController extends Controller) 类中有多个“菜单”功能。每个都构建CMenu 需要的数组,我根据传入函数的内容设置活动数组。例如:
protected function getAdminMenu($activeTitle) {
return array(
array('label'=>'Manage pages', 'url'=>array('/user/purchase'),'active'=>($activeTitle=='Manage pages')?true:false),
array('label'=>'Manage users', 'url'=>array('/user/index'),'active'=>($activeTitle=='Manage users')?true:false),
);
}
您可以在看起来像控制器或操作或 URL 请求的地方执行此操作,并将相应的菜单项设置为活动状态。这只是一个例子。
然后在我看来,如果我想在“管理页面”处于活动状态时呈现菜单,我会使用我的 Controller 类中的函数设置我的布局菜单:
$this->menu=$this->getAdminMenu('Manage pages');
(这假设您在 Controller 中声明了 public $menu=array();,并且也声明了。查看博客示例以了解其工作原理:
$this->widget('zii.widgets.CMenu', array(
'items'=>$this->menu,
));
)
我希望这能给你一些方向!