我正在开发一个基于 ZF2 的站点。无论访问者/用户状态如何,我都有一个保持不变的主导航。需要添加另一个组件/导航,这将取决于用户的状态和角色。对于访客来说,这些物品将是
- 登记
- 登录
- EN(实际上是一个下拉菜单,带有其他可用语言)
对于登录的普通用户,它将显示
- 轮廓
- 登出
- EN(如上所述的语言选择器)
对于某些具有特定角色/权限的用户,会有额外的项目
我想使用 RBAC,因为 ACL 看起来很臃肿,而且只是为了检查当前登录的用户/角色是否有其他项目,我需要加载完整的 ACL(我们得到了大约 15 种以上不同类型的角色)。
我花了一些时间思考我是如何做到这一点的,所以以下是我的一些想法。
- 我创建了一个空的导航容器,并创建了一个工厂。在工厂中,我访问身份验证和 RBAC 并根据用户的状态/角色添加页面。
- 我用所有可能的页面创建了一个完全加载的导航,然后在工厂中,在身份验证和 RBAC 的帮助下,我隐藏了我不想显示的页面。
rd 选项是使用视图助手,它将通过 ServiceLayer 获取 RBAC 并生成导航。(如ZF2 如何在布局中显示推文和ZF2 中所述:在模板中添加登录小部件。
- 或者我可以在 module.php 中创建一个控制器插件或一个方法,然后监听 MVC_Render 或 MVC_Dispatch 事件并生成所需的导航并将输出添加到视图变量。
PS:我需要使用部分,因为我需要在语言选择部分添加一些 CSS 类。导航也将显示在布局中。