如何在Laravel中为基于用户角色的菜单构建代码?

时间:2012-10-13 18:16:48

标签: design-patterns menu bundle laravel

用户登录我正在开发的应用程序后,根据他们的角色,他们需要显示一组不同的菜单项。

我创建了一个名为“menu”的过滤器,我在其中组装菜单项。我在routes.php中有这个在所有内容之前运行我的过滤器:

Route::group(array('before' = 'auth|menu'), function()...

在菜单过滤器的末尾,我这样做是为了在每个视图中都可以访问菜单类:

View::share('menu', $menu);

对于实际构建菜单我使用Laravel Menu bundle,但我还没有找到从控制器动态设置菜单项“active”标志的最佳方法。

菜单包检查URL以设置活动标志(这对我不起作用,因为它似乎将路径名与URI::current()进行比较,只有后者返回包含域,端口和所有内容的完整URL,所以它永远不会匹配)但我宁愿以某种方式从我的控制器中访问$menu类,所以我可以直接修改它。

我该怎么做?当使用注册表(a.k.a.美化全局变量)时会出现这种情况吗?

1 个答案:

答案 0 :(得分:2)

会给你基本的想法,你会准备好继续前进。使用IoC容器将菜单对象实例化为单例,然后从控制器或视图访问它。注入菜单的另一种方法是使用View Composer。您可以深入了解Laravel文档和源代码。