Yii. Управление видимостью виджетов без использования свойства visible

В Yii Framework в качестве штатного средства для управления видимостью тех или иных визуальных объектов используется свойство visible.

Вот не большой пример из стандартного шаблона сайта, который включен в состав Yii. В нём реализовано управление показом кнопок главного меню для входа на сайт и выхода.

array('label'=>'Вход', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'Выйти ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)

Однако, к сожалению, не все визуальные объекты имеют это свойство. Поэтому, если необходимо, например, «спрятать» такой объект от глаз неавторизованного пользователя, то штатными средствами это сделать не получится.

В таком случае на помощь приходит оператор PHP if. С помощью него можно просто и легко управлять видимостью любых визуальных объектов в зависимости от выполнения тех или иных условий.

В качестве примера, сделаем так, чтобы стандартное боковое меню «Operations» было доступно только авторизованным пользователям.

Для этого воспользуемся предыдущим примером. Возьмём из него код для определения, является ли пользователь авторизованным, и используем его в качестве условия для оператора if.

if (!Yii::app()->user->isGuest)
{
    $this->beginWidget('zii.widgets.CPortlet', array('title'=>'Operations', ));
    $this->widget('zii.widgets.CMenu', array('items'=>$this->menu,'htmlOptions'=>array('class'=>'operations',),));
    $this->endWidget();
}

Теперь меню «Operations» доступно только авторизованным пользователям.

Данный приём можно использовать со всеми виджетами, у которых отсутствует свойство visible.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *