Php 在laravel中显示从数据库选中的复选框

Php 在laravel中显示从数据库选中的复选框,php,laravel,laravel-5.4,blade,Php,Laravel,Laravel 5.4,Blade,我在应用程序中使用了用于ACL的Laratrust包。我正在尝试使用复选框编辑角色(为角色分配权限)。并希望从数据库中选中“已分配权限”复选框状态 RoleController.php中的代码 public function edit($id) { $role = Role::where('id', $id)->with('permissions')->first(); $permissions = Permission::all(); return view('

我在应用程序中使用了用于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
@foreach($permissions as$permission)
权限->采摘('id')=$permission->id?“选中“:”}
>
{{$permission->display_name}({{$permission->description})
@endforeach
代码正在抛出错误 类Illumb\Support\Collection的对象无法转换为int

我试过:

{{$role->permissions->id=$permission->id?'checked':''}

这会引发错误:

此集合实例上不存在属性[id]

当我执行
{{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>
permissions)@if(在数组中($permission->id,$role->permissions->pull('id'))选中@endif@endif>

希望这会有所帮助:)

最简单的方法是使用contain签入集合

@如果($role->permissions->contains($permission->id))checked=选中@endif

<input type="checkbox" name="permissions[]" value="{{$permission->id}}" 
{{ @if($role->permissions->contains($permission->id)) checked=checked @endif }}
>
permissions->contains($permission->id))checked=checked@endif}
>
另一个简短的方法

<input type="checkbox" name="permissions[]" value="{{ $permission->id }}" 
{{ $role->permissions->contains($permission->id) ? 'checked' : '' }}>
permissions->contains($permission->id)?”选中“:”}}>

您是否可以回显“”;打印($role->permissions);并显示您正在尝试检查集合是否等于int。
$role->permissions
是一个集合。尝试编辑您的帖子,同时包括您的控制器。@我已使用控制器中的代码更新了问题。Vikash使用您的代码片段。我在_array()中得到了错误
,它希望参数2是数组,给定的对象
通过在pull方法的末尾附加
toArray()
方法解决了问题。谢谢你纠正我。