Php 如何使用Zend Framework显示/隐藏菜单项
[见最后的更新] 我正在使用PHP中的Zend framework,在Zend导航方面遇到了一些困难。这是我在这里的第一个问题,所以如果有什么问题,告诉我,我会纠正它 我的应用程序中有一个类似于此的菜单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> </
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'));
}