親子関係を持つCRUDのACLをどのように構成すればよいのでしょうか。
例えば。プロジェクトにはTodoListがあります。TodoListsにはTodosがあります
プロジェクトにはさまざまなコントローラーアクションがあります
- / projects / add
- / projects / edit / {projId}
- / projects / delete / {projId}
- / todo-lists / add / {projId}
- / todo-lists / edit / {todoListId}
- ..。
階層を下に行くことがわかるように、一部のアクションには、それ自体ではなく(たとえば、todo-lists controller-> todo-list resource)、それらの親を参照するIDがあります。
だから私がセットアップしたので(一般的に)、それはこのように見えます
- ACLコントローラープラグイン(preDispatch)
- ログインしたユーザーまたは「認証されていない」に役割を設定します
- リソースをコントローラー名に設定
- アクション名に特権を設定する
- request param'id'が設定されている場合は、を実装する実際のエンティティ(Doctrine ORMを使用しています)を取得します
Zend_Acl_Resource_Interface
。ここで複雑さが発生します。私は通常、コントローラー名からリソースを取得しますが、たとえば。代わりに親エンティティを取得することを/todo-lists/add
知っている必要があります(プロジェクト)。この設定では、特権を「addTodoList」のようなものに変更する必要があります。このように、プロジェクトのaclアサーションクラスはTodoListsのものを使用する必要があります。また、コントローラーアクションとACLロジックの間も切断されます。それは大丈夫ですか?
たぶん私はTodoListsControllerの代わりにProjectsControllerにaddTodoListActionを持っているべきですか?これにより、ACLコードが簡素化されます。リソース/特権を確認して変更する必要はありませんか?これらは、リクエストパラメータ(コントローラとアクションの名前)から直接取得できます。
このようなACLをどのように設定しますか?