Yii2 навигация по сайту Bootstrap?

Для реализации навигации по сайту с использованием Yii2 и Bootstrap есть несколько способов.

1. Меню Bootstrap навигации (Nav)
Один из способов - использовать компонент Nav из Bootstrap. В Yii2 есть виджет yiibootstrapNav, который облегчает создание навигации с использованием Bootstrap.

Пример кода для создания простого горизонтального меню:

   use yiibootstrapNav;
   
   echo Nav::widget([
       'items' => [
           ['label' => 'Home', 'url' => ['site/index']],
           ['label' => 'About', 'url' => ['site/about']],
           ['label' => 'Contact', 'url' => ['site/contact']],
       ],
       'options' => ['class' =>'navbar-nav'],
   ]);

Ключевой параметр здесь - items, который принимает массив пунктов меню. Каждый пункт может содержать label и url. Вы также можете настроить дополнительные параметры, такие как options для указания класса CSS или active для указания активного пункта меню.

2. Динамическое меню
Если вам нужно создать меню, которое может динамически изменяться в зависимости от условий (например, прав доступа пользователя), вы можете использовать Nav в сочетании с классом модели Yii2 и методом контроллера. Вы можете создать метод контроллера, который будет возвращать массив пунктов меню в зависимости от различных условий. Затем используйте этот метод в представлении для создания динамического меню.

Пример кода класса модели:

   class Menu extends yiidbActiveRecord
   {
       public static function getMenuItems()
       {
           // Ваша логика для создания массива пунктов меню
           return [
               ['label' => 'Home', 'url' => ['site/index']],
               ['label' => 'About', 'url' => ['site/about']],
               ['label' => 'Contact', 'url' => ['site/contact']],
               // ...
           ];
       }
   }

Пример кода метода контроллера:

   class SiteController extends yiiwebController
   {
       public function actionIndex()
       {
           $items = Menu::getMenuItems();
   
           return $this->render('index', [
               'items' => $items,
           ]);
       }
   }

Пример кода представления:

   use yiibootstrapNav;
   
   echo Nav::widget([
       'items' => $items,
       'options' => ['class' =>'navbar-nav'],
   ]);

В этом примере мы используем класс модели Menu и метод контроллера getMenuItems() для получения пунктов меню, которые будут переданы в представление и отображены с помощью Nav виджета.

3. Генерация меню из базы данных
Если у вас есть динамическое меню, которое хранится в базе данных, вы можете использовать фреймворк Yii2 для работы с базой данных и генерации меню. В этом случае вам потребуется создать модель базы данных и использовать методы фреймворка для извлечения и обработки данных из базы данных, и затем передать эти данные в виджет Nav для отображения меню.

Конкретные шаги и код зависят от вашей базы данных и требований. Вы можете использовать ActiveRecord класс Yii2 для работы с таблицей базы данных и получения данных в виде массива пунктов меню.

Пример кода для работы с базой данных:

   class Menu extends yiidbActiveRecord
   {
       public static function getMenuItems()
       {
           $items = [];
           $data = self::find()->all();
   
           foreach ($data as $item) {
               $items[] = ['label' => $item->label, 'url' => $item->url];
           }
   
           return $items;
       }
   }

Это пример базовой реализации, где мы используем класс модели Menu для работы с таблицей базы данных menu и получаем данные в виде массива пунктов меню.

Пример кода метода контроллера:

   class SiteController extends yiiwebController
   {
       public function actionIndex()
       {
           $items = Menu::getMenuItems();
   
           return $this->render('index', [
               'items' => $items,
           ]);
       }
   }

Пример кода представления:

   use yiibootstrapNav;
   
   echo Nav::widget([
       'items' => $items,
       'options' => ['class' =>'navbar-nav'],
   ]);

В этом примере мы используем класс модели Menu для получения пунктов меню из базы данных и передачи их в представление для отображения с помощью Nav виджета.

Это лишь некоторые возможные способы реализации навигации по сайту с использованием Yii2 и Bootstrap. Подходящая реализация зависит от ваших требований и специфики проекта.