LINUX.ORG.RU

Можно ли реализовать в проекте на Yii2 механизм аналогичный middleware Laravel, и как?

 


0

1

В проекте на Yii2 необходимо разделить по ролям доступ юзеров. Функционал проекта большой и прописывать в behaviors для каждой роли в каждом нужном контроллере слишком времязатратный процесс. Я новичок в Yii, до этого юзал Laravel и механизм миддлварей например для группы роутов очень удобный. Подскажите, есть ли варианты реализации такого в Yii, может есть родные инструменты?

Легко. Нужно сделать базовый класс контроллера, к примеру AdminController. Затем в нем определяете нужные behaviors() и наследуетесь от этого контроллера.

fman2
()
Ответ на: комментарий от no-such-file

А чем изкоробочный RBAC не устроил?

В этом Yii2 приходится behaviors писать в каждом контроллере и не дай бог где-то ошибиться, потом будешь отлаживать всю жизнь. По этому же принципу работают и роутеры с аннотациями в Symfony.

Вместо этого в Yii2 могли бы предложить какой-нибудь behaviors.yml (.php), где можно было бы поведения сконфигурировать в одном месте. Но насколько я знаю, такого в Yii2 нет.

fman2
()
Ответ на: комментарий от fman2

В этом Yii2 приходится behaviors писать в каждом контроллере

Зачем? Ты же сам сказал что нужно делать - базовый контролер и от него наследоваться. Вроде бы очевидное решение.

Вместо этого в Yii2 могли бы предложить какой-нибудь behaviors.yml (.php), где можно было бы поведения сконфигурировать в одном месте

А кто тебе мешает использовать свой AccessFilter и тянуть настройки из yaml вместо массива?

no-such-file ★★★★★
()
Ответ на: комментарий от bluerose

Переписывать все behaviors?

Изучить как это работает. Так сложно придумать как передать некое значение вместо того чтобы копипастить? В yii 100500 способов чтобы что-то куда-то внедрить...

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Ну предварительно, думаю решим так, как предложил no-such-file, введем родительский контроллер, а он будет сверяться с таблицей в БД, где роли будет соответствовать список контроллеров-методов, которые разрешены для этой роли.

bluerose
() автор топика
Ответ на: комментарий от nguseff

Besides controllers, you can also declare filters in a module or application. When you do so, the filters will be applied to all controller actions belonging to that module or application, unless you configure the filters' only and except properties like described above.

nguseff
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.