Laravel 5.5 - 如果角色有权限,请选中复选框

And*_*mes 2 php laravel blade laravel-5 laravel-5.5

我有以下代码与Form Collective包一起使用,但由于尚未针对5.5更新包,因此现在无法正常工作.我也在使用Spatie的Laravel Permission包

我的代码是

@foreach ($permissions as $permission)

    {{Form::checkbox('permissions[]',  $permission->id, $role->permissions ) }}
    {{Form::label($permission->name, ucfirst($permission->name)) }}<br>

@endforeach
Run Code Online (Sandbox Code Playgroud)

我认为这只是循环通过permissions,如果permission属于当前role检查框.

如何在不使用包装的情况下实现这一目标?

我目前试过了

@foreach ($permissions as $permission)

    <div class="checkbox">
        <label>
            {{ ucfirst($permission->name) }}
        </label>
        <input type="checkbox" name="permissions[]" value="{{ $permission->id }}">
        <br>
    </div>

@endforeach
Run Code Online (Sandbox Code Playgroud)

但我不确定如何根据角色是否在列表中具有权限来附加checked属性.

Des*_*901 8

只需将该checked属性添加到复选框HTML:

<input type="checkbox" name="permissions[]" value="{{ $permission->id }}" checked>
Run Code Online (Sandbox Code Playgroud)

如果您需要在条件上设置它,请使用以下代码:

<input type="checkbox" name="permissions[]" value="{{ $permission->id }}" @if(/* some condition */) checked @endif>
Run Code Online (Sandbox Code Playgroud)

编辑

因为在我添加一些细节之前我不明白这个问题.

假设您的Role模型具有附加权限的集合,并且它存储在$role->permissions您可以执行的属性中

<input type="checkbox" name="permissions[]" value="{{ $permission->id }}" @if($role->permissions->contains($permission)) checked @endif>
Run Code Online (Sandbox Code Playgroud)

这样,您可以检查您的角色是否具有id权限$permission->id.