如何在数据库中设置值时将复选框显示为已选中 - Laravel

时间:2014-09-16 10:11:01

标签: php laravel laravel-4

我设置委托并尝试通过编辑用户页面管理角色。我已经提取了可用角色列表以及用户已分配给的角色,并将它们作为$ roles和$ assignedRoles传递给视图

我遇到的问题是,表格显示已经分配的角色($ assignedRoles)已检查,未分配的角色($ roles的剩余部分)未检查。

$ roles看起来像

    [{"id":1,"name":"Admin","created_at":"2014-09-15 14:26:24","updated_at":"2014-09-15 14:26:24"},{"id":2,"name":"Pastor","created_at":"2014-09-15 14:26:34","updated_at":"2014-09-15 14:26:34"},{"id":3,"name":"Elder","created_at":"2014-09-15 14:26:43","updated_at":"2014-09-15 14:26:43"},{"id":4,"name":"Ministry Leader","created_at":"2014-09-15 14:26:55","updated_at":"2014-09-15 14:26:55"}]

和$ userRoles看起来像

    [{"id":1,"name":"Admin","created_at":"2014-09-15 14:26:24","updated_at":"2014-09-15 14:26:24","pivot":{"user_id":1,"role_id":1}}]

我正在使用

遍历视图中的可用角色
@foreach ($roles as $role)
    {{ Form::checkbox('role[]', $role->id) }}
    {{ Form::label('role', $role->name) }}<br>
@endforeach

我的问题是我不知道如何制作它以便在查看表单时它将显示已根据$ userRoles设置的角色(上图)。 真的很感激任何帮助。

3 个答案:

答案 0 :(得分:6)

首先,您创建一个包含所有数据的数组

<?php 
$all_data = array();
foreach($roles as $role){
     $all_data[] =  $role->id;
}
?>

现在您创建复选框

@foreach ($roles as $role)
    {{ Form::checkbox('role[]', $role->id, in_array($role->id, $all_data)) }}
    {{ Form::label('role', $role->name) }}<br>
@endforeach

答案 1 :(得分:2)

在控制器中

    $user = User::find($id);
    $allRoles = Role::all();
    $assignedRoles  = $user->roles->pluck('id')->toArray();

可见

<div class="form-group row" id="assign_hostel_fees">
   <label for="inputEmail3" class="col-sm-3 control-label">Select Roles</label>
      <div class="col-sm-9">
          @foreach($allRoles as $role)
             <div class="form-check">
                 <label class="form-check-label">
                    <input class="form-check-input" type="checkbox" name="roles[]" value="{{$role->id}}" {{in_array($role->id,$assignedRoles)?'checked':''}}>
                    {{$role->name}}
                 </label>
             </div>
          @endforeach
       </div>
 </div>

答案 2 :(得分:1)

这可能对你有帮助 -

{{ Form::checkbox('agree', 1, true) }}

将生成 -

<input checked="checked" name="agree" type="checkbox" value="1">

第三个参数定义是否检查它。取决于数据(使用$userRoles检查$roles的角色ID)生成truefalse值的变量。