0

好的,我有一个代码可以生成如下的 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 的形式,因为我点击了这个链接,帮助我获取了所有 URI,管理每个组的权限(在上面的代码中命名为 super_admin 和 reg_user)并将它们保存在数据库。

问题是现在,我想呈现一个菜单,其中仅包含特定组可访问的特定项目。这意味着,使用上面的 XML,如果我使用super_admin输入,我将有一个像这样的菜单:

- Home
    - Article
        - Insert

如果我使用reg_user输入,我的菜单应该是:

- Home
    - Article

我怎样才能做到这一点?

我正在使用 Zend Framework 1.11.x

4

1 回答 1

2

如果你想在没有 Zend ACL 的情况下这样做,我建议为菜单编写自己的部分。然后您使用 xml 文件中的菜单项权限检查当前用户角色(可能存储在 Zend_Registry 中)。

在这里您可以看到如何使用自定义菜单部分https://stackoverflow.com/a/1255289/760866

您可以像这样读取自定义 xml 属性:

$properties = new Zend_Config($page->GetCustomProperties());
$privilege = $properties->privilege;

希望有帮助!

于 2013-04-02T21:58:01.370 回答