Вложенные контроллеры - PullRequest
1 голос
/ 12 марта 2011

Есть ли способ иметь вложенные контроллеры или, по крайней мере, выглядеть так, как в codeigniter, например.

/ администратор / контроллер

где admin - это каталог внутри контроллеров forlder.

/ admin / users_controllers.php, где вы положили туда все.

Я знаю, что могу добиться этого с помощью маршрутов, но просто любопытно, могу ли я сделать это для архитектуры приложения.

1 Ответ

2 голосов
/ 12 марта 2011

Я думаю, что организация вещей таким образом смешивает контроллер и логику аутентификации.В CakePHP ваши действия сгруппированы по контроллерам, а контроллеры обычно соответствуют моделям.Таким образом, у вас будут контроллеры для пользователей, сообщений, продуктов или чего-либо еще.

Тогда для каждого контроллера некоторые действия могут быть доступны только пользователям с определенными привилегиями, например администраторам.Вы должны не создавать отдельный контроллер, чтобы различать уровень привилегий, а скорее группировать свои действия в соответствии с данными, которые они действуют opon.Задача компонента Auth, возможно, работающего вместе с другими компонентами, такими как Acl, предоставить или запретить доступ к отдельным действиям в каждом контроллере.

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

Так что ответ на ваш вопрос: вы не должны.Это не то, для чего предназначены контроллеры;контроллеры предназначены для группировки действий над одними и теми же объектами, а не для группирования действий, требующих разных уровней доступа.

...