不确定这是否是最佳做法,但我们希望布局视图上有菜单,并将网址参数作为值传递应检索一些数据。
菜单类似于:
<ul id="menu">
<li>districtA</li>
<li>districtB</li>
<li>districtC</li>
</ul>
类似于:
'url'=>array('/event/getEventsByDistrict', 'district'=>id),
有更好的方法吗?
我的意思是,通过这样做,我相信,如果新的区域被添加到数据库中,那么我们应该手动编辑菜单,将相应的ID放在那里?有没有办法从数据库中检索该ID,因此,每次呈现菜单时,我们可能确定该新项目将链接到该新项目的相应ID(仅添加了区域?)?
这对你有意义吗?
似乎唯一的方法可能是创建一个包装类或什么?
也许地区不是一个很好的例子,它们不会经常改变,但让我们想象经常发生变化的事情。
请咨询
答案 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
));