我有一个 Zend_Navigation 使用由 navigation.xml 文件提供的数据运行。假设第一级 (0) 由两个页面组成,前端和后端。前端可由来宾角色访问,后端只能由管理员角色访问。
如果我做一个
<?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 来控制权限,并且工作正常。我唯一的问题是我不想为客人显示前端/后端导航,因为只有一个链接项的导航非常无用。很抱歉造成混乱。