标记使用Laravel选中的动态创建复选框

时间:2019-08-08 10:53:02

标签: laravel

我正在尝试在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 }}" /> &nbsp;&nbsp;&nbsp;
        <label>{{ ucwords(str_replace('-', ' ', $perms->name)) }}</label>
      </div>
   </div>
 @endforeach

1 个答案:

答案 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 /> &nbsp;&nbsp;&nbsp;
        <label>{{ ucwords(str_replace('-', ' ', $permission->name)) }}</label>
      </div>
   </div>
 @endforeach

我猜您的$rolePermissions是一组ids。如果不只是从集合中获取ID:

$rolePermissions = Role::findOrFail($id)->permissions->pluck('id');