Хлебные крошки — удобный инструмент навигации. Они используются во многих проектах, поэтому проще всего написать их реализацию один раз в виде виджета и использовать этот виджет во всех других проектах.
Создадим сам виджет. Для этого в папке проекта protected/components создадим класс, отнаследованный от CWidget.
class BreadCrumb extends CWidget {
public $crumbs = array();
public $delimiter = '<li>>></li>';
public function run() {
$this->render('breadCrumb');
}
}
Посмотрите на код. Виджет использует вьюшку с именем breadCrumb. Ее нужно создать и положить в папку protected/components/views
<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 и условия вывода в представлении.
Осталось вызвать виджет в нужном представлении.
$this->widget('application.components.BreadCrumb',
array('crumbs' => array(
array('name' => 'Настройки'),
) ));
Добрый день
А будет ли работать этот виджет в Yii2 ? Подскажите пожалуйста.
P.S.
Сайт очень понравился — легкий и со смыслом — без навязчивости, удачи в продвижении и новых статей по YII2.
Нет не будет, классы в Yii2 называются по другому. Зато в Yii2 есть уже готовый встроенный Breadcrumbs Widget
// в layout <?php use yii\widgets\Breadcrumbs; ?> ... <?= Breadcrumbs::widget([ 'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], ]) ?> ... // во view $this->params['breadcrumbs'][] = $this->title;