我想知道如何构建具有父/子关系的CRUD的ACL。
EG。项目有TodoLists。 TodoLists有Todos
项目有各种控制器动作
正如您所看到的那样,在层次结构中,某些操作的ID不是指自己(例如todo-lists controller - > todo-list资源),而是指其父级
因此,我已经设置(通常),它看起来像这样
Zend_Acl_Resource_Interface
的实际实体(我正在使用Doctrine ORM)。这就是复杂性出现的地方。我通常会从控制器名称获取资源,但是例如。使用/todo-lists/add
我必须知道获取父实体(Project)。有了这个设置,我将不得不使用'addTodoList'这样的特权。这样,项目acl断言类就会有TodoLists的东西。控制器动作和控制器之间也会断开连接。 ACL逻辑。那可以吗?也许我应该在ProjectsController而不是TodoListsController中添加addTodoListAction?这将简化我的ACL代码,我不需要检查和修改资源/权限?我可以直接从请求参数(控制器和操作名称)中获取这些信息。
如何设置这样的ACL?
答案 0 :(得分:2)
使用Zend_Acl_Assertion,为projectid和todoId创建断言。在给予许可时
$myAcl->allow($role,'projects','edits',new My_Project_Assertion());
并且你不能使用动作“addTodoListAction”,因为有大写字母(或定义你自己的调度员)addtodolistAction wd work;