当在Laravel中的数据库中设置值时,如何显示复选框为选中状态

问题描述 投票:4回答:3

我正在设置委托并尝试通过编辑用户页面来管理角色。我已经提取了可用角色以及用户已经分配给他们的角色的列表,并将它们作为$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(上面)设置了哪些角色。

php laravel laravel-4
3个回答
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

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>


1
投票

这可能对您有帮助-

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

将产生-

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

第三个参数定义是否将对其进行检查。根据数据(用$userRoles检查$roles的角色ID)生成具有truefalse值的变量。]​​>

© www.soinside.com 2019 - 2024. All rights reserved.