在Laravel中有条件地包含子视图的正确方法


Proper way to include subviews conditionally in Laravel

在Laravel 4中,是否存在有条件地包含子视图的最佳实践?

我的主菜单页应该包括不同的片段,这取决于用户的权限。

这是我目前已经开始的。我在视图中添加了一个if语句:

@extends("layout")
@section("content")
<h2>This is the Main Menu</h2>

@if(Auth::user()->permissions & Config::get('permissions.aw'))
    @include('awMenu')
@endif
@stop

我可以看到这可能会变得很难看,因为可以有多达31个不同的权限。(不,我不会用那么多)有人能给我推荐一个更好的方法吗?

我有个想法…

在主视图中:

@include('permission-views')
在权限视图:

@include('awMenu')
@include('myOtherPermissionView')
...

在awMenu 和所有其他权限视图:

@if(Auth::user()->permissions & Config::get('permissions.aw'))
    ... content to show if the user has permission ...
@endif

这至少可以防止你的主视图变得过于混乱,并将决定访问的责任推给负责显示内容的视图。