В 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.