Мне интересно, как мне структурировать ACL для CRUD с отношениями Родитель / Ребенок.
Например.Проекты имеют TodoLists.TodoLists имеют Todos
. Существуют различные действия контроллера для проекта
- / projects / add
- / projects / edit / {projId}
- /projects / delete / {projId}
- / списки задач / add / {projId}
- / списки задач / edit / {todoListId}
- ...
Как вы можете видеть, переходя вниз по иерархии, некоторые действия имеют идентификаторы, которые ссылаются не на себя (например, контроллер todo-lists -> ресурс todo-list), а на их родителя
с помощью «У меня есть настройка» (в целом), это выглядит такресурс для имени контроллера
Установить привилегию для имени действия , если задан параметр «id» запроса, получить фактическую сущность (я использую Doctrine ORM), которая реализует
Zend_Acl_Resource_Interface
.Вот где возникает осложнение.Я обычно получаю ресурс от имени контроллера, но, например, для.с
/todo-lists/add
я должен знать, чтобы получить родительскую сущность вместо (Project).При такой настройке мне придется изменить привилегию на что-то вроде 'addTodoList'.Таким образом, класс утверждения acl проекта будет иметь дело с TodoLists.Также будет отключение между действиями контроллера и логикой ACL.Это нормально?
Может быть, мне нужно добавить addTodoListAction в ProjectsController вместо TodoListsController?Это упростит мой код ACL, мне не нужно будет проверять и изменять ресурс / привилегии?Я могу просто взять их непосредственно из параметров запроса (имена контроллеров и действий).
Как настроить ACL следующим образом?