我在Roles and Permission
工作。
我已从permissions
表中获取所有权限。我想显示superadmin的所有可用权限,同时如果他已经有了一些权限,那么应该选中复选框,如果有的话,则不应该选中复选框
Permisson
表格包含字段:id,name,display_name,description,timestamp
roles
表:id,name,display_name,description,timestamp
permission_user
表:permission_id,user_id
这是当前状态:http://imgur.com/a/bfveP
Rolecontroller:
public function edit($id)
{
$role = Role::where('id', $id)->with('permissions')->first();
$permissions = Permission::all();
// dd($role);//i am getting permission of that role
return view('manage.roles.edit')->with('permissions',$permissions)- >with('role',$role);
}
edit.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Edit</div>
<div class="panel-body">
form...
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Edit</div>
<div class="panel-body">
@foreach( $permissions as $permission )
<p>
<input type="checkbox"
name="permissions[]"
id="perm_{{ $permission->id }}"
{{ in_array($permission->id, $role->permissions->pluck('id') ) ? 'checked="checked"' : '' }}
value="{{ $permission->id }}">
{{ $permission->display_name }}
</p>
@endforeach
</div>
</div>
</div>
</div>
</div>
@endsection
答案 0 :(得分:0)
更改
{{$role->display_name?'checked="checked"':''}}"
要
{{$role->display_name }}" {{Auth::user()->can($permission) ?'checked="checked"':''}}>
这将为您提供以下代码段
<p>
<input type="checkbox" name="" id="{{$role->display_name }}" {{Auth::user()->can($permission) ?'checked="checked"':''}}>
{{$permission->display_name}}
</p>
这会将id设置为显示名称,并使用coalesce运算符来检查当前经过身份验证的用户(或您更改的用户)是否具有角色$role
。
答案 1 :(得分:0)
来自@Milo的代码应该有效,但我的猜测是因为它没有与用户连接而无法正常工作..
而不是Auth :: user() - &gt; can($ permission),如果角色包含该权限参数,请尝试在角色模型上创建一个返回布尔值的方法。像$ role-&gt;之类的东西包含($ permission)。
然后做一些事情,比如列出id和名字(注意不要把它们放入其中),然后,我经常做像@if($ role-&gt; contains($ permission))checked =&#34;检查&#34; @endif
答案 2 :(得分:0)
首先要检查的创建方法是已在角色模型中添加的权限
public function isPermissionExist($id)
{
foreach($this->permissions as $permission){
if($permission->id == $id)
return true;
}
return false;
}
下一步在视野中
@foreach( $permissions as $permission )
<p>
<input type="checkbox"
name="permissions[]"
id="perm_{{ $permission->id }}"
@if($role->isPermissionExist($permission->id)) checked @endif
value="{{ $permission->id }}">
{{ $permission->display_name }}
</p>
@endforeach
答案 3 :(得分:0)
在edit.blade.php
中试试<label class="checkbox-inline "for="perm[{{ $permission->id }}]">
<input id="perm[{{ $permission->id }}]" name="perm[{{ $permission->id }}]" type="checkbox" value="{{ $permission->id }}"
@if($role->permissions->contains($permission->id)) checked=checked @endif
> {{ $permission->name }}
</label>