Laravel-突出显示已分配给用户的角色

时间:2018-12-28 09:06:49

标签: laravel checkbox view edit

在用户\编辑视图中,我将所有角色显示为复选框。我想检查已经分配给用户的角色。表单中的所有其他字段已经用数据库中的详细信息填写。我正在尝试使用Spatie的Laravel权限。

Image of the view

@foreach ($roles as $role)
    <input type="checkbox" value="{{$role->id}}" name="{{$role->name}}" > {{$role->name}}</input>
@endforeach

我想使用纯HTML。我读到有关急切加载的信息,但据我了解,它只会给我分配给用户的角色,而不是全部。

当我单击更新按钮时,我想使用sychRoles()功能。 我希望建立类似于Voyager使用的视图:example

3 个答案:

答案 0 :(得分:0)

尝试一下。它将检查是否有任何登录用户。然后,它将使用角色关系中的id匹配该用户的角色。

    @foreach ($roles as $role)
        <input type="checkbox" value="{{$role->id}}" name="{{$role->name}}" 
        @if(auth()->check()) 
             @foreach(auth()->user()->roles as $userRole)
                 @if($userRole->id==$role->id) {{"checked"}}
                 @endif
             @endforeach
       @endif> {{$role->name}}</input>
    @endforeach

答案 1 :(得分:0)

尝试以下:

在控制器中:

$roles = $user->roles;

在刀片文件中:

@foreach ($roles as $role)
    <input type="checkbox" value="{{$role->id}}" name="{{$role->name}}"> {{$role->name}}</input>
@endforeach

答案 2 :(得分:-1)

这是控制器代码

public function edit($id)
{
    $role = role::find($id);
    $permissions = Permission::all();
    return view('admin.role.edit',compact('role','permissions'));
}

在视野范围内

<div>
    <label for="name">Assigned Permissions</label>
    @foreach ($permissions as $permission)
        @if ($permission->for == 'user')
            <div class="checkbox">
                <label><input type="checkbox" name='permission[]' value="{{ $permission->id }}"
                @foreach ($role->permissions as $give_role)
                    @if ($give_role->id == $permission->id)
                        checked
                    @endif
                @endforeach
                >{{ $permission->name }}</label>
            </div>
        @endif
    @endforeach
</div>