Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PHP для продвинутых.docx
Скачиваний:
16
Добавлен:
01.07.2025
Размер:
12.54 Mб
Скачать

18. Виджет cMenu

Виджет CMenu используется в файле view/layouts/main.php

Виджет CMenu. Листинг 18.1

<div id="mainmenu">

<?php $this->widget('zii.widgets.CMenu',array(

'items'=>array(

array('label'=>'Home', 'url'=>array('/site/index')),

array('label'=>'About', 'url'=>array('/site/page', 'view'=>'about')),

array('label'=>'Contact', 'url'=>array('/site/contact')),

array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),

array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)

),

)); ?>

</div><!-- mainmenu -->

Первый параметр виджета – это путь к файлу виджета.

Zii.widgets.CMenu – означает, что файл виджета находится по адресу /framework/zii/widgets. Файл виджета CMenu отвечает за построение меню.

Второй параметр – это массив, первый элемент которого items. Данный элемент содержит вложенный массив.

Параметры вложенного массива:

label – текст ссылки

url – значение атрибута href ссылки.

linkoptionsмассив дополнительных опций для ссылок, например, класс для css.

linkOptions, массив дополнительных опций для ссылки. Листинг 18.2

<?php $this->widget('zii.widgets.CMenu',array(

'items'=>array(

array('label'=>'Home', 'url'=>array('/site/index'), ‘linkOptions’=>array(‘class’=>’my_class’)

),

)); ?>

itemOptions – массив дополнительных опций для элемента списка li.

visible – показывать либо скрывать данную ссылку для разных ролей пользователей. Например:

'visible'=>Yii::app()->user->isGuest – означет показывать ссылку только для пользователя Гость.

'visible'=>!Yii::app()->user->isGuest – показывать ссылку только для авторизированных пользователей.

items. Чтобы сделать вложенное меню, мы можем для любой ссылки указать еще один элемент items, содержащий те же параметры.

Вложенное меню виджета CMenu. Листинг 18.3

<?php $this->widget('zii.widgets.CMenu',array(

'items'=>array(

array('label'=>'Home', 'url'=>array('/site/index'),

'items'=>array(

array('label'=>'Link', 'url'=>'#')

)),

),

)); ?>

htmlOptions – массив дополнительных опций для блока содержащего ссылки, для списка ul:

htmlOptions, массив дополнительных опций для блока ссылок. Листинг 18.4

<?php $this->widget('zii.widgets.CMenu',array(

'items'=>array(

array('label'=>'Home', 'url'=>array('/site/index'),

),

htmlOptions’=>array(‘class’=>’my_class’)

)); ?>

19. Хлебные крошки. Виджет cBreadcrumbs

Пример использования данного класса можно найти в файле views/layouts/main.php

Включаем виджет хлебных крошек. Листинг 19.1

<?php if(isset($this->breadcrumbs)):?>

<?php $this->widget('zii.widgets.CBreadcrumbs', array(

'links'=>$this->breadcrumbs,

)); ?><!-- breadcrumbs -->

<?php endif?>

Параметр links должен содержать ссылки на страницы, которые определяются в файле подшаблонов.

Вывод хлебных крошек. Листинг 19.2

$this->breadcrumbs=array(

'Contact'=>array(’#’),

);

Если элемент массива не содержит вложенного массива со значением ссылки, то создается хлебная крошка без ссылки (конечная). Пример:

Хлебная крошка не являющася ссылкой. Листинг 19.3

$this->breadcrumbs=array(

'Contact'=>array(’#’), ‘Текущая статья’

);

Или так:

Хлебная крошка не являющася ссылкой. Листинг 19.4

$this->breadcrumbs=array(

‘Текущая статья’

);

Также виджет может принимать дополнительные параметры, например htmlOptions и другие.

Ессли свойство breadcrrumbs будет пустым, то виджет не будет срабатывать.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]