基于角色的Laravel菜单?

基于角色的Laravel菜单?,laravel,laravel-5,laravel-5.5,Laravel,Laravel 5,Laravel 5.5,我有codeigniter的背景。现在,我在学习拉威尔。所以,在这种情况下(例如),我试图创建一个webapp,它有多个用户。用户类型A可以访问菜单A、菜单b和菜单c,用户类型b只能访问菜单A 现在,我正在使用。如果它只有两种类型,我可以手动编写。但是,如果有五种或更多类型的用户呢 当我使用codeigniter时。我创建了4个表用户,用户类型,菜单,菜单访问。你必须了解它是如何工作的。我只是,玩查询,然后我显示它 UsersType(用户)->TypeId(UsersType)->MenuId

我有codeigniter的背景。现在,我在学习拉威尔。所以,在这种情况下(例如),我试图创建一个webapp,它有多个用户。用户类型A可以访问菜单A、菜单b和菜单c,用户类型b只能访问菜单A

现在,我正在使用。如果它只有两种类型,我可以手动编写。但是,如果有五种或更多类型的用户呢

当我使用codeigniter时。我创建了4个表
用户
用户类型
菜单
菜单访问
。你必须了解它是如何工作的。我只是,玩查询,然后我显示它

UsersType(用户)->TypeId(UsersType)->MenuId(菜单访问)->MenuId(菜单)

我已经在使用谷歌了,我发现了这个
https://github.com/Zizaco/entrust
但我可以从这个包中看到什么。仅授予操作权限(输入、编辑和删除)


那么,我可以用我的laravel做我的codeigniter吗?保存我的路由属性,然后在我的
rouotes/web.php
中显示它(我不知道是否可能,还没有尝试过)。对不起,我说的是英语。

我要做的是在用户类中放入一个函数,该函数检查自己的权限,然后返回一个包含用户有权访问的菜单的视图

public function menu()
{
    switch($this->role) {
        case 'admin':
            return view('menus.admin');
        [etc]
    }
}
然后在视图中,只需检查用户是否已登录并显示菜单:

@if Auth::check()
    {{ Auth::user->menu() }}
@endif

正如在评论中提到的,听起来您想要的是基于用户是否具有特定权限有条件地显示内容的能力

有很多这样的实现。从本质上讲,它们都是存储可以授予用户的权限,并且可以选择存储允许将权限分配给某个角色的角色,然后再向用户授予该角色,并自动授予他们与该角色关联的权限

我发现这似乎很好。然后,如果将用户模型传递到视图中,则可以执行以下操作:

@if ($user->can('edit-posts'))
<a>Edit post</a>
@endif
@if($user->can('edit-posts'))

您应该能够以同样的方式使用
can()
方法。

听起来您需要某种权限系统,例如,如果用户a拥有权限X,则显示小部件Y。对吗?@MatthewDaly yap,类似的内容。有包裹吗?也许我错过了谷歌的一些东西有一些实现,或者你可以很容易地自己实现它。我将在回答中详细解释。这是我的建议。在数据库中存储菜单选项听起来很可怕。我同意你的观点,但我会花时间+1@NathanHeffleySpatiale有自己的菜单包来管理菜单项