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