を使用してZend_Navigation
おり、統合しようとしていZend_Acl
ます。ナビゲーションの各ページにはprivilege
属性があります。私が判断できないのは、1 つのページに複数の特権を定義する方法です。
ユースケース:ユーザーを管理するためのページ。add
現在サインインしているユーザーの役割がリソースに対して、edit
、またはdelete
特権を持っている場合、そのページを (ナビゲーションで) 表示したいと考えていますUsers
。
ナビゲーション XML のエントリの例:
<admin_users>
<label>Users</label>
<route>default</route>
<controller>admin</controller>
<action>users</action>
<resource>Users</resource>
<privilege>add,edit,delete</privilege>
</admin_users>
上記のようにカンマ区切りのリストを使用しても、望ましい動作にはなりません。
アップデート
Zend_Navigation_Page
コードを掘り下げた後、単一の文字列値しか許可されていないことがわかりました。誰かがこのクラスを拡張したり、この制限を回避する別の方法を見つけたりしましたか?
/**
* Sets ACL privilege associated with this page
*
* @param string|null $privilege [optional] ACL privilege to associate
* with this page. Default is null, which
* sets no privilege.
* @return Zend_Navigation_Page fluent interface, returns self
*/
public function setPrivilege($privilege = null)
{
$this->_privilege = is_string($privilege) ? $privilege : null;
return $this;
}