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

Laravel 5.5 - Check checkbox if role has permission

我有以下代码可与 Form Collective 包一起使用,但是目前无法正常工作,因为该包尚未针对 5.5 进行更新。我也在使用 Spatie 的 Laravel 权限包

我的密码是

@foreach ($permissions as $permission)

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

@endforeach

我认为这只是循环遍历 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

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

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

<input type="checkbox" name="permissions[]" value="{{ $permission->id }}" checked>

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

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

编辑

由于我在添加一些细节之前没有理解问题。

假设您的 Role 模型有一组附加权限并且存储在属性 $role->permissions 中,您可以这样做

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

这样你就可以检查你的角色是否有id为$permission->id的权限。

试试这个:

@foreach ($permissions as $permission)

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

@endforeach