动态添加菜单项时的CMenu URL属性用法?

时间:2012-06-05 08:52:30

标签: yii cmenu

不确定这是否是最佳做法,但我们希望布局视图上有菜单,并将网址参数作为值传递应检索一些数据。

菜单类似于:

<ul id="menu">
<li>districtA</li>
<li>districtB</li>
<li>districtC</li>
</ul>

类似于:

'url'=>array('/event/getEventsByDistrict', 'district'=>id),

有更好的方法吗?

我的意思是,通过这样做,我相信,如果新的区域被添加到数据库中,那么我们应该手动编辑菜单,将相应的ID放在那里?有没有办法从数据库中检索该ID,因此,每次呈现菜单时,我们可能确定该新项目将链接到该新项目的相应ID(仅添加了区域?)?

这对你有意义吗?

似乎唯一的方法可能是创建一个包装类或什么?

也许地区不是一个很好的例子,它们不会经常改变,但让我们想象经常发生变化的事情。

请咨询

1 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,假设您的District模型具有name属性,这应该有效。

$districts = DistrictModel::model()->findAll();
$menu = array();
foreach($districts as $district) $menu[] = array('label'=>$district->name, 'url'=>array('event/getEventsByDistrict', 'district'=>$district->id));

$this->widget('zii.widgets.CMenu', array(
    'items'=>$menu
));