我正在尝试在laravel中开发角色和权限。现在,我可以使角色正常工作,但是我只是遇到了将复选框标记为用户当前权限的问题。
这是我当前的控制器代码
$role = Role::findOrFail($id);
$perm = Role::findOrFail($id)->permissions;
$permissions = Permission::all();
return view('Roles.edit', compact('permissions', 'role', 'perm'));
根据我的观点
@foreach($permissions as $perms)
<div class="col-lg-12">
<div class="input-group m-input-group m-input-group--square">
<input type="checkbox" name="permission[]" value="{{ $perms->id }}" />
<label>{{ ucwords(str_replace('-', ' ', $perms->name)) }}</label>
</div>
</div>
@endforeach
答案 0 :(得分:0)
首先,您的变量名确实很糟糕,因此请尝试对它们进行改进,以便稍后您知道发生了什么:)
我会改变这一点:
$perm = Role::findOrFail($id)->permissions;
对此:
$rolePermissions = Role::findOrFail($id)->permissions;
然后,在您的视图中,您将需要检查当前权限是否包含在$rolePermissions
中,并将checked
属性添加到复选框:
@foreach($permissions as $permission)
<div class="col-lg-12">
<div class="input-group m-input-group m-input-group--square">
<input type="checkbox" name="permission[]"
value="{{ $permission->id }}"
@if(in_array($permission->id, $rolePermissions)) checked @endif />
<label>{{ ucwords(str_replace('-', ' ', $permission->name)) }}</label>
</div>
</div>
@endforeach
我猜您的$rolePermissions
是一组ids
。如果不只是从集合中获取ID:
$rolePermissions = Role::findOrFail($id)->permissions->pluck('id');