Хлебные крошки — удобный инструмент навигации. Они используются во многих проектах, поэтому проще всего написать их реализацию один раз в виде виджета и использовать этот виджет во всех других проектах.
Создадим сам виджет. Для этого в папке проекта 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