我想使用基于 Zend_Acl 的 Zend_Navigation 进行导航,下面是我位于 /application/configs 目录中的一部分 navigation.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<config>
<nav>
<menu1>
<label>solidData</label>
<uri>#</uri>
<pages>
<service>
<label>menuLabel1</label>
<controller>service</controller>
<action>index</action>
<resource>service</resource>
<privilege>index</privilege>
</service>
<attendance>
<label>menuLabel2</label>
<controller>attendance</controller>
<action>index</action>
<resource>attendance</resource>
<privilege>index</privilege>
</attendance>
</pages>
</menu1>
<menu2>
<label>systemData</label>
<uri>#</uri>
<pages>
<users>
<label>users</label>
<controller>users</controller>
<action>index</action>
<resource>users</resource>
<privilege>index</privilege>
</users>
<profile>
<label>profiles</label>
<controller>profile</controller>
<action>index</action>
<resource>profile</resource>
<privilege>index</privilege>
</profile>
<dictionary>
<label>dictionary</label>
<controller>dictionary</controller>
<action>index</action>
<resource>dictionary</resource>
<privilege>index</privilege>
</dictionary>
<language>
<label>languages</label>
<controller>language</controller>
<action>index</action>
<resource>language</resource>
<privilege>index</privilege>
</language>
</pages>
</menu2>
</nav>
</config>
我不想在 ACL 中显示所有页面都被拒绝的部分。
例如,如果有用户在 ACL 中对所有页面资源和权限都有 TYPE_DENY<menu1>
我不想创建和显示标签“solidData”
主要问题是我的菜单结构,因为如您所见,我在一个菜单部分中有各种资源。
我已经尝试使用我自己的 Navigation 类扩展 Zend_Navigation 并使用函数isVisible()和“ isActive() ”,但我找不到解决方案。
我会很感激任何帮助
[编辑] 看看我的菜单的这个片段结构:
<menu2>
<label>systemData</label>
<uri>#</uri>
<pages>
<users>
<label>users</label>
<controller>users</controller>
<action>index</action>
<resource>users</resource>
<privilege>index</privilege>
</users>
<profile>
<label>profiles</label>
<controller>profile</controller>
<action>index</action>
<resource>profile</resource>
<privilege>index</privilege>
</profile>
</pages>
</menu2>
我不能<resource>
因为<menu2>
包含<menu2>
具有不同资源 fe 'users' 和 'profile' 的页面。也许有可能将许多资源添加到一个菜单中。我尝试这样的事情:
<menu2>
<label>systemData</label>
<uri>#</uri>
<resource>users</resource>
<resource>profile</resource>
<pages>
...
</pages>
</menu2>
但我明白了
Invalid argument: $resource must be null, a string, or an instance of Zend_Acl_Resource_Interface
编辑
好的,但是如果我更改菜单结构,我还必须更改 ACL。在我的 ACL 资源是控制器中,权限是控制器中的操作。