在 laravel 中显示从数据库中选中的复选框
Show checkbox checked from database in laravel
我在我的应用程序中使用 ACL 的 Laratrust 包。我正在尝试使用复选框编辑角色(为角色分配权限)。并希望从数据库中检查已分配的权限复选框状态。
RoleController.php
中的代码
public function edit($id)
{
$role = Role::where('id', $id)->with('permissions')->first();
$permissions = Permission::all();
return view('admin.manage.roles.edit')->withRole($role)->withPermissions($permissions);
}
下面是我试过的代码:
@foreach($permissions as $permission)
<div class="checkbox checkbox-styled">
<label>
<input type="checkbox" name="permissions[]" value="{{$permission->id}}"
{{ $role->permissions->pluck('id') == $permission->id ? 'checked' : '' }}
>
<span>{{$permission->display_name}} <em>({{$permission->description}})</em></span>
</label>
</div>
@endforeach
代码抛出错误
Object of class Illuminate\Support\Collection could not be converted to int
我试过:
{{ $role->permissions->id == $permission->id ? 'checked' : '' }}
这会引发错误:
Property [id] does not exist on this collection instance
当我执行 {{dd($role->permissions)}}
时:给出以下输出:
如果有人能指出我在这里做的错误,我将不胜感激。
您的代码将无法运行,因为您试图将数组与字符串进行比较,这是不可能的。您可以使用 php in_array
函数来检查当前权限是否存在您的权限
我认为您正在尝试检查特定角色已经存在的所有权限。如果我错了请纠正我。
试试这个
<input type="checkbox" name="permissions[]" value="{{$permission->id}}"
@if($role->permissions) @if(in_array($permission->id, $role->permissions->pluck('id')) checked @endif @endif>
希望这会有所帮助:)
最简单的方法是使用 contain
检入集合
@if($role->permissions->contains($permission->id)) checked=checked @endif
<input type="checkbox" name="permissions[]" value="{{$permission->id}}"
{{ @if($role->permissions->contains($permission->id)) checked=checked @endif }}
>
另一个简短的方法。
<input type="checkbox" name="permissions[]" value="{{ $permission->id }}"
{{ $role->permissions->contains($permission->id) ? 'checked' : '' }}>
我在我的应用程序中使用 ACL 的 Laratrust 包。我正在尝试使用复选框编辑角色(为角色分配权限)。并希望从数据库中检查已分配的权限复选框状态。
RoleController.php
public function edit($id)
{
$role = Role::where('id', $id)->with('permissions')->first();
$permissions = Permission::all();
return view('admin.manage.roles.edit')->withRole($role)->withPermissions($permissions);
}
下面是我试过的代码:
@foreach($permissions as $permission)
<div class="checkbox checkbox-styled">
<label>
<input type="checkbox" name="permissions[]" value="{{$permission->id}}"
{{ $role->permissions->pluck('id') == $permission->id ? 'checked' : '' }}
>
<span>{{$permission->display_name}} <em>({{$permission->description}})</em></span>
</label>
</div>
@endforeach
代码抛出错误
Object of class Illuminate\Support\Collection could not be converted to int
我试过:
{{ $role->permissions->id == $permission->id ? 'checked' : '' }}
这会引发错误:
Property [id] does not exist on this collection instance
当我执行 {{dd($role->permissions)}}
时:给出以下输出:
如果有人能指出我在这里做的错误,我将不胜感激。
您的代码将无法运行,因为您试图将数组与字符串进行比较,这是不可能的。您可以使用 php in_array
函数来检查当前权限是否存在您的权限
我认为您正在尝试检查特定角色已经存在的所有权限。如果我错了请纠正我。
试试这个
<input type="checkbox" name="permissions[]" value="{{$permission->id}}"
@if($role->permissions) @if(in_array($permission->id, $role->permissions->pluck('id')) checked @endif @endif>
希望这会有所帮助:)
最简单的方法是使用 contain
检入集合@if($role->permissions->contains($permission->id)) checked=checked @endif
<input type="checkbox" name="permissions[]" value="{{$permission->id}}"
{{ @if($role->permissions->contains($permission->id)) checked=checked @endif }}
>
另一个简短的方法。
<input type="checkbox" name="permissions[]" value="{{ $permission->id }}"
{{ $role->permissions->contains($permission->id) ? 'checked' : '' }}>