Menu::widget

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
evnazar4
Сообщения: 49
Зарегистрирован: 2018.11.09, 09:38

Menu::widget

Сообщение evnazar4 »

Есть таблица books: id, name
Задача при добавлении новой записи в таблицу отображать новый пункт меню где label это name из таблицы, а url это id - controller/action?id
Вопрос, как реализовать вывод всех пунктов меню из таблицы books.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Menu::widget

Сообщение ElisDN »

Циклом по Book::find()->orderBy('name')->all().
evnazar4
Сообщения: 49
Зарегистрирован: 2018.11.09, 09:38

Re: Menu::widget

Сообщение evnazar4 »

ElisDN писал(а): 2019.05.04, 16:09 Циклом по Book::find()->orderBy('name')->all().
Как будет выглядеть цикл, формирующий переменную с множеством массивов типа:

Код: Выделить всё

['label' => 'book_1', 'icon' => 'circle-o', 'url' => 'book/edit?id=1',],
['label' => 'book_2', 'icon' => 'circle-o', 'url' => 'book/edit?id=2',],
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Menu::widget

Сообщение ElisDN »

Обычный foreach с:

Код: Выделить всё

$items[] = ['label' => $book->name, 'url' => ['/book/view', 'id' => $book->id]];
или array_map.
evnazar4
Сообщения: 49
Зарегистрирован: 2018.11.09, 09:38

Re: Menu::widget

Сообщение evnazar4 »

ElisDN писал(а): 2019.05.04, 16:31 Обычный foreach с:

Код: Выделить всё

$items[] = ['label' => $book->name, 'url' => ['/book/view', 'id' => $book->id]];
или array_map.

Код: Выделить всё

$book= Book::find()->all();
foreach ($book as $m) {
    $menuItems[] = ['label' => $m->name, 'url' => ['/book/view', 'id' => $m->id]];
}
не работает, что не так делаю?
выводится только одна запись
Последний раз редактировалось evnazar4 2019.05.04, 16:54, всего редактировалось 1 раз.
evnazar4
Сообщения: 49
Зарегистрирован: 2018.11.09, 09:38

Re: Menu::widget

Сообщение evnazar4 »

Код Menu::widget

Код: Выделить всё

'label' => 'Книги',
                                'icon' => 'circle-o',
                                'url' => '#',
                                'items' => [
                                    $menuItems[''],
                                    ['label' => 'Добавить', 'icon' => 'circle-o', 'url' => ['book/add'],],
                                ],
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Menu::widget

Сообщение ElisDN »

Код: Выделить всё

'items' => ArrayHelper::merge($menuItems, [
    ['label' => 'Добавить', 'icon' => 'circle-o', 'url' => ['book/add'],],
]),
evnazar4
Сообщения: 49
Зарегистрирован: 2018.11.09, 09:38

Re: Menu::widget

Сообщение evnazar4 »

Спасибо, помогло.
Ответить