我有一个Zend_Navigation,其中运行的是由navigation.xml文件提供的数据。假设第一级(0)由两个页面组成,前端和后端。前端只能通过管理员角色访问来宾角色,后端可访问前端。Zend_Navigation:获取当前用户/角色可访问的页面
如果我做了
<?php echo $this->navigation()->menu()->setMaxDepth(0); ?>
它正确地显示“前端”链接时,不登录,无论是“前端”和“后端”的链接作为管理员登录时。
但是,显示“前端”链接对客人来说没有太大意义,因为他们没有任何其他页面可以在该层次上导航到该层。所以我宁愿不显示那个导航为客人。
我知道我可以做
<?php
if ('guest' !== $this->view->role) {
echo $this->navigation()->menu();
}
?>
,但我希望有一个更好的方式来做到这一点。
我正在寻找的是类似
<?php
if (count($this->navigation()->getPagesForRole($this->view->role)) > 1) {
echo $this->navigation()->menu();
}
?>
我无法弄清楚如何与Zend_Navigation提供的API来实现这个...我看到有一个GETPAGES()方法,但它将返回所有页面“未过滤”。
我认为这是一个简单的解决方案,但我一直试图找出过去两个小时,并没有发现任何东西,所以我想我看着错误的方向。
谢谢你的时间。
编辑:
我忘了提,导航已经使用ACL来控制的权限,它的正常工作。我唯一的问题是,我不想为来宾显示前端/后端导航,因为只导航一个链接项目是没用的。 对此感到抱歉。
感谢您详细的解答。我忘了提及我已经在使用Zend_Acl,而且工作正常。对于那个很抱歉。 – jgxvx 2011-02-24 11:18:00
@ jgxvx只是确保客人没有访问权限,然后导航中的任何项目。 – Gordon 2011-02-24 11:54:23