Виджет "хлебные крошки" в Yii

Опубликовано: 22.12.2017

видео Виджет

Yii с нуля. Урок 8. Вызов в моделях функции, общей для них. Как избегать дублирования кода?

Хлебные крошки — удобный инструмент навигации. Они используются во многих проектах, поэтому проще всего написать их реализацию один раз в виде виджета и использовать этот виджет во всех других проектах.



Создадим сам виджет. Для этого в папке проекта protected/components создадим класс, отнаследованный от CWidget.

class BreadCrumb extends CWidget { public $crumbs = array(); public $delimiter = '<li>>></li>'; public function run() { $this->render('breadCrumb'); } }

Посмотрите на код. Виджет использует вьюшку с именем breadCrumb. Ее нужно создать и положить в папку protected/components/views


Yii framework 6 урок модель работа с бд

<ul> <li>::</li> <li><a href="/">Главная</a></li> <?php echo $this->delimiter; foreach($this->crumbs as $crumb) { if(isset($crumb['url'])) { echo "<li>".CHtml::link($crumb['name'], $crumb['url'])."</li>"; } else { echo "<li>".$crumb['name']."</li>"; } if(next($this->crumbs)) { echo $this->delimiter; } } ?> </ul>

В моем примере, хлебные крошки выводятся в виде списка. В представлении (view) доступны все переменные класса BreadCrumb. Это значит, что если у вас хлебные крошки зависят от каких-либо дополнительных параметров, можно добавить переменную в класс BreadCrumb и условия вывода в представлении.


Yii2: RBAC: rules. Видео 17.2

Осталось вызвать виджет в нужном представлении.

$this->widget('application.components.BreadCrumb', array('crumbs' => array( array('name' => 'Настройки'), ) ));
rss