Добрый вечер.
Возник вопрос, приблизительно представляю как реализовать, но правильное ли это решение?
Всё просто.
Обыкновенный сайт на yii2. Использую виджет Nav для вывода меню. Самих меню на сайте может быть несколько, в "шапке" сайта, в "подвале", слева и справа. Пункты меню редактируются в админке. Поэтому виджет Nav использую следующим образом.
<?=
Nav::widget([
'items' => Catalog::getMenu(null)
]);
?>
Метод
getMenu(null)
формирует в модели двухуровневое меню, параметром можно передать какие именно пункты будут отображаться в данном меню. То есть, можно передать или "head" или "middle" или "left" или "right".
В админке, при создании нового пункта меню я указываю, в каком месте сайта этот пункт выводить, соответственно в выпадающем списке в форме выбираю или "head" или "middle" или "left" или "right".
Но один и тот же пункт может выводится как в "шапке" сайта, так и в "подвале".
Я думаю, что в форме создания нового пункта переделать выпадающий список вариантов на checkboxList, чтобы была возможность выбора нескольких вариантов. И создать отдельно таблицу, где хранить id пункта меню и место, в какой части сайта его выводить.
Но насколько это правильно? Подскажите, пожалуйста, правильное решение.