2012-06-05 6 views
2

Не уверен, если это лучшая практика, но мы хотим иметь меню на просмотр в макета и передать в качестве параметра URL значение, которое должно получить некоторые данные.Использование атрибута URL-адреса CMenu при динамическом добавлении пунктов меню?

меню будет что-то вроде:

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

Так что-то вроде:

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

Есть ли лучший способ сделать это?

Я имею в виду, что, если я добавлю новый район в базу данных, то мы должны отредактировать меню вручную, разместив там соответствующий идентификатор? Не существует способа получить этот идентификатор из базы данных, так что каждый раз, когда меню отображается, мы можем быть уверены, что этот новый элемент будет ссылаться на соответствующий идентификатор этого нового (только добавленный район?)?

Это имеет смысл для вас?

Кажется, что единственным способом может быть создание класса-оболочки или чего-то еще?

Возможно, районы не являются хорошим примером, они не часто меняются, но давайте представим что-то, что часто меняется.

Пожалуйста, советы

+1

Вам нужен элемент меню, который ссылается на последний район или меню, которое ссылается на каждый район? – adamors

+0

@ Örs Я обновил свой вопрос. Каждый пункт меню должен извлекать ВСЕ события данного района. Это решение контроллера, это может быть что-то другое. – MEM

ответ

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 
)); 
+0

Орки, спасибо, это, кажется, хороший способ пойти. Еще не проверено, но я попробую. – MEM

 Смежные вопросы

  • Нет связанных вопросов^_^