好的,我有一个生成xml文件的代码,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configdata>
<nav>
<main>
<label>Home</label>
<alias>main</alias>
<uri>/</uri>
<privilege>
<super_admin>super_admin</super_admin>
<reg_user>reg_user</reg_user>
</privilege>
<status>active</status>
<sprite>sprite.png</sprite>
<pages>
<article>
<label>Article</label>
<alias>article</alias>
<uri>/article</uri>
<privilege>
<super_admin>super_admin</super_admin>
<reg_user>reg_user</reg_user>
</privilege>
<status>active</status>
<pages>
<insert>
<label>Insert</label>
<alias>insert</alias>
<uri>/article/insert</uri>
<privilege>
<super_admin>super_admin</super_admin>
</privilege>
<status>active</status>
</insert>
[...]
</pages>
</article>
[...]
</pages>
</main>
</nav>
</configdata>
我的问题是我的URI不是Zend Acl的形式,因为我跟着this link帮助我获取所有URI,管理每个组的权限(在上面的代码中命名为super_admin和reg_user) )并将它们保存在数据库中。
现在的问题是,我想渲染一个菜单,其中只包含可访问特定组的特定项目。这意味着,使用上面的XML,如果我输入 super_admin ,我会有一个这样的菜单:
- Home
- Article
- Insert
如果我输入 reg_user ,我的菜单应为:
- Home
- Article
我该怎么做?
我正在使用Zend Framework 1.11.x
答案 0 :(得分:2)
如果你想在没有Zend ACL的情况下这样做,我建议你自己编写部分菜单。 然后使用xml文件中的菜单项权限检查当前用户角色(可能存储在Zend_Registry中)。
您可以在此处查看如何使用自定义菜单partial https://stackoverflow.com/a/1255289/760866
您可以阅读以下自定义xml属性:
$properties = new Zend_Config($page->GetCustomProperties());
$privilege = $properties->privilege;
希望有所帮助!