Php 如何使用Zend Framework显示/隐藏菜单项

Php 如何使用Zend Framework显示/隐藏菜单项,php,zend-framework,menu,menuitem,Php,Zend Framework,Menu,Menuitem,[见最后的更新] 我正在使用PHP中的Zend framework,在Zend导航方面遇到了一些困难。这是我在这里的第一个问题,所以如果有什么问题,告诉我,我会纠正它 我的应用程序中有一个类似于此的菜单 Home Login Logout Member's Page 我有一个包含菜单的导航xml文件 <nav> <home> <label>Home</label> <uri>/</uri> </

[见最后的更新]

我正在使用PHP中的Zend framework,在Zend导航方面遇到了一些困难。这是我在这里的第一个问题,所以如果有什么问题,告诉我,我会纠正它

我的应用程序中有一个类似于此的菜单

Home 
Login
Logout
Member's Page
我有一个包含菜单的导航xml文件

<nav>
 <home>
    <label>Home</label>
    <uri>/</uri>
 </home>
 <login>
    <label>Login</label>
    <uri>/index/login</uri>
 </login>
 <logout>
    <label>Logout</label>
    <uri>/index/logout</uri>
 </logout>
 <member>
    <label>Member's Page</label>
    <uri>/index/member</uri>
 </member>
</nav>
然后,在我的布局中,我查看我的令牌并根据它显示菜单

if ($tokenValid) {
     echo $this->navigation()->menu()->render(Zend_Registry::get('main')); 
} else {
     echo $this->navigation()->menu()->render(Zend_Registry::get('logged'));
}

所以它现在可以像我想的那样工作了,但我仍然想做得更干净,所以如果你有任何建议来帮助我。。。谢谢大家!

您应该看看上的“利用Zend_Navigator”网络研讨会。它解释了如何将导航与特定的角色/ACL联系起来。

我用我使用的解决方案更新了我的问题,也许我以后会找到更好的方法,但现在就是这样。我在这里没有找到解决办法,这就是为什么我要回答我自己的问题。谢谢你的帮助

但是我没有使用ACL,我会用这些细节编辑我的问题,谢谢!请看一下网络研讨会。您只需在XML中存储一些额外的信息,并将信息传递给导航以获取相关项集。因此,您可以轻松地创建两个假角色(一个匿名,一个“登录用户”),并使用这些角色为您的用例显示正确的菜单项。很抱歉,我的回答太晚,没有得到通知,正在处理其他问题。我会看一看,然后我会回来接受一个答案,这取决于什么是有效的。谢谢你提供的链接将不再工作
<?php
      $partial = array('menu.phtml', 'default');
      $this->navigation()->menu()->setPartial($partial);
      echo $this->navigation()->menu()->render();
?>
<menuAnonymous>
     <home>
     <label>Login</label>
        <uri>/login</uri>
     </home>
    </menuAnonymous>
    <menuLogged>
     <home>
        <label>Logout</label>
        <uri>/Logout</uri>
     </home>
    </menuLogged>
$config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'menuNotLogged');    
$container = new Zend_Navigation($config);
Zend_Registry::set('main',$container);
if ($tokenValid) {
     echo $this->navigation()->menu()->render(Zend_Registry::get('main')); 
} else {
     echo $this->navigation()->menu()->render(Zend_Registry::get('logged'));
}