如何显示角色在laravel 5委托中的所有权限?
How to display all permissions a role has in laravel 5 entrust?
所以,我想显示特定角色拥有的所有权限。我写了这段代码:
public 函数索引()
{
$角色 = Role::first();
$binding = $role->perms->toArray();
dd($绑定);
//return 视图('binding.index', 紧凑('binding'));
}
所以基本上 dd 给出:
array:1 [▼
0 => array:7 [▼
"id" => 1
"name" => "create-news"
"display_name" => "Create News"
"description" => "/news/{news}/create"
"created_at" => "2015-02-21 12:29:28"
"updated_at" => "2015-02-21 12:30:21"
"pivot" => array:2 [▶]
]
]
这是 ::first() (一个角色)的结果。所以,总结一下,$binding就是一个角色数组,每个角色就是一个权限数组。如何从此类变量传递和提取数据?
需要的示例结果:
角色:用户
权限:查看新闻;
角色:管理员
权限:创建新闻、编辑新闻。
还是只有 2 个嵌套的 foreach 循环?
此外,我注意到 Role::all();我收到错误 Undefined 属性: Illuminate\Database\Eloquent\Collection::$perms。怎么会这样,我没有收到 Role::first(); 的错误?
您可以加载所有角色(并且已经预先加载权限以保存数据库查询):
$roles = Role::with('perms')->get();
然后将其传递给您的视图:
return view('binding.index', compact('roles'));
并在那里循环:
@foreach($roles as $role)
@foreach($role->perms as $permission)
{{ $permission->someproperty }}
@endforeach
@endforeach
当然如果你想要它作为一个数组你也可以只调用$roles->toArray()
。权限将嵌套在每个角色中。
在 laravel 5.3
中检索分配给角色的权限的不同方法
方案一:
Role::where('name', $roleParam)->first()->perms;
注意:权限名称可以是权限中存在的任何名称table,如下所示
$roleParam = 'add-user';
方案二:
$roleObj = Role::where('name', $roleParam)->first();
return $this->response->array($roleObj->perms);
此解决方案适用于 Dingo Router Helpers :-) 因此您必须将 Helpers 用于基本控制器,如下所述。
use Dingo\Api\Routing\Helpers;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests, Helpers;
}
所以,我想显示特定角色拥有的所有权限。我写了这段代码:
public 函数索引() { $角色 = Role::first(); $binding = $role->perms->toArray(); dd($绑定); //return 视图('binding.index', 紧凑('binding')); }所以基本上 dd 给出:
array:1 [▼ 0 => array:7 [▼ "id" => 1 "name" => "create-news" "display_name" => "Create News" "description" => "/news/{news}/create" "created_at" => "2015-02-21 12:29:28" "updated_at" => "2015-02-21 12:30:21" "pivot" => array:2 [▶] ] ]这是 ::first() (一个角色)的结果。所以,总结一下,$binding就是一个角色数组,每个角色就是一个权限数组。如何从此类变量传递和提取数据? 需要的示例结果: 角色:用户 权限:查看新闻; 角色:管理员 权限:创建新闻、编辑新闻。
还是只有 2 个嵌套的 foreach 循环?
此外,我注意到 Role::all();我收到错误 Undefined 属性: Illuminate\Database\Eloquent\Collection::$perms。怎么会这样,我没有收到 Role::first(); 的错误?
您可以加载所有角色(并且已经预先加载权限以保存数据库查询):
$roles = Role::with('perms')->get();
然后将其传递给您的视图:
return view('binding.index', compact('roles'));
并在那里循环:
@foreach($roles as $role)
@foreach($role->perms as $permission)
{{ $permission->someproperty }}
@endforeach
@endforeach
当然如果你想要它作为一个数组你也可以只调用$roles->toArray()
。权限将嵌套在每个角色中。
在 laravel 5.3
中检索分配给角色的权限的不同方法方案一:
Role::where('name', $roleParam)->first()->perms;
注意:权限名称可以是权限中存在的任何名称table,如下所示
$roleParam = 'add-user';
方案二:
$roleObj = Role::where('name', $roleParam)->first();
return $this->response->array($roleObj->perms);
此解决方案适用于 Dingo Router Helpers :-) 因此您必须将 Helpers 用于基本控制器,如下所述。
use Dingo\Api\Routing\Helpers;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests, Helpers;
}