我正在使用Zend_Navigation
并尝试将其与Zend_Acl
. 导航中的每个页面都有一个privilege
属性。我无法确定的是如何为单个页面定义多个权限。
用例:用于管理用户的页面。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;
}