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
- 10687 reads