2

不确定这是否是最佳实践,但我们希望在布局视图上有一个菜单,并作为URL 参数传递一个应该检索一些数据的值。

菜单将类似于:

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

所以像:

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

有更好的方法吗?

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

这对你有意义吗?

似乎唯一的方法可能是创建一个包装类或其他东西?

也许地区不是一个很好的例子,它们不会经常变化,但让我们想象一下经常变化的东西。

请指教

4

1 回答 1

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
));
于 2012-06-05T09:10:05.720 回答