Yii Передача параметра в виджет - параметризация виджета
Primary tabs
Виджет можно положть в ту же директорию, что и компоненты
пусть его код таков:
(этот виджет отвечает за вывод дополнительного меню=
<?php
/* рассмотрим здесь "параметризированный" виджет*/
class AdminMenuWidget extends CWidget {
/*в общем случаем может
хранить целый массив свойст - нас же интересует
только текущее действие
- чтобы подсветить активный элемент меню*/
public $params = array(
// пусть по умолчанию будет активна ссылка на главную
'action'=>'index',
// следующие два не использую - просто для примера
'parameter 2'=>'value 2',
'parameter 3'=>'value 3',
);
public function run() {
// передаем данные в представление виджета
$this->render('adminmenu',array('params' => $this->params));
}
}
тогда для него можно создать например такое представление:
(виджет используется в компании с twitter bootstrap)
< ul class="nav nav-pills" >
<li<?php if ($params['action']=='index')
echo ' class="active"' ;
?> >
<?php echo CHtml::link('Админка', array('perfomance/index')); ? >
< /li >
< li< ?php if ($params['action'] == 'showtickets')
echo ' class="active"' ;
? > >
<?php echo CHtml::link('Заявки', array('perfomance/showtickets')); ? >
< /li >
< li<?php if ($params['action'] == 'rebuildroles')
echo ' class="active"' ;
? > >
< ?php echo CHtml::link('Роли', array('perfomance/rebuildroles')); ? > < /li >
< /ul >
а вот и передача параметра - наименования текущего действия - этот код надо вставить в тело каждой страницы - чтобы она сама передала информацию о себе:
<?php
$this->beginWidget('AdminMenuWidget',array(
'params'=>array(
//получаем текущее действие чтобы подсветить активный элемент меню
'action' => Yii::app()->getController()->getAction()->getId(),
)));
$this->endWidget();
?>
- Log in to post comments
- 10964 reads