Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 11.08.2017 17:10:55

Разграничение прав меню

Уважаемые разработчики, прошу помощи в построении логики! Хочу вывести меню с помощью построителя lavary/laravel-menu. с этим проблем не возникло. пункты самого меню хранятся в БД с разграничением на родительский или дочерний. далее в контроллере конструируется меню и посылается соответственно в шаблон. И вот вопрос в чем, мне нужно выводить 4 разных вида меню в зависимости от прав зашедшего. Подскажите, как это сделать, что было все красиво? не выводить 4 разных шаблона при этом. как сделать условия при формировании в контроллере, чтобы не проверять каждый пункт (оно строится циклом из БД)? или же помечать в самой таблице БД,но как,если один пункт может быть доступен и двум и трем разным правам?  или проверять в самом шаблоне права и соответственно печатать или нет элемент(но это ужасно некрасиво выглядит, т к много условий нужно)Может кто делал подобный вывод?) Буду благодарна за направление в логике)

Изменено Yuliya (11.08.2017 17:13:11)

Не в сети

#2 11.08.2017 20:11:55

Re: Разграничение прав меню

Вариант 1. Если меню не динамическое, т.е. один раз создали и всё, то можно сделать 4 варианта меню, каждый в отдельном файле, и подключать их в главном шаблоне согласно правам.
Вариант 2. Создавать кэш меню в контроллере через Cache::remember() - будет 4 меню. Логика такая: проверяются права пользователя, определяется соответствующий ключ кэша, по этому ключу выводится меню. Для первого пользователя придётся обработать каждый пункт согласно правам и добавить его в кэш. А для остальных пользователей с теми же правами меню будет браться уже из кэша. Если меню будет меняться, то повесить событие на модель, чтобы при изменении удалялся кэш.

Лично мне первый вариант кажется самым простым.

Не в сети

Подвал раздела