首页 > 解决方案 > 在刀片中动态创建复选框

问题描述

我正在准备在我的刀片中创建复选框列表,其中包含我在DB. 我正在循环获取所有角色,以及是否检查角色是否有我正在编辑的这个用户:

@foreach($roles as $rol)
   @foreach ($selRoles as $role)
     @if ($role == $rol->id)
        <div class="col-md-4">
          <input type="checkbox" name="rol" checked=checked class="form-check-input" value="{{ $rol->id }}" id="{{ $rol->id }}">
          {{ $rol->name }}
       </div>
     @else
      <div class="col-md-4">
         <input type="checkbox" name="rol" class="form-check-input" value="{{ $rol->id }}" id="{{ $rol->id }}">
         {{ $rol->name }}
      </div>                                                   
     @endif
   @endforeach
@endforeach

使用此代码,我的问题是我的所有角色都重复了。在我的控制器中,我有这个:

public function edit(User $usuario)
    {
        $roles = Bouncer::role()->orderBy('title', 'DESC')->get();
        $selRoles = $usuario->roles->pluck('id')->toArray(); //selRoles it´s roles from user
    
        $usuario->load('roles');

        return view('admin.empleados.edit', compact('usuario', 'roles','selRoles'));
    }

并在刀片中返回它:

teleoperadora
teleoperadora
teleoperadora
repartidor
repartidor
repartidor
prueba
prueba
prueba
Jefe de equipo
Jefe de equipo
Jefe de equipo
jefa-sala
jefa-sala
jefa-sala
instalador
instalador

例如。我不知道在我的刀片中获得这个结果是我做的不好。任何人都可以帮助我吗?

感谢阅读和帮助。对不起我的英语不好

标签: laravellaravel-5laravel-blade

解决方案


您的角色会重复,因为您使用了两个foreach循环。您选择的角色是一个数组,因此检查角色-> id 是否在该数组中就足够了:

@foreach($roles as $role)
<div class="col-md-4">
  <input type="checkbox" name="rol" @if(in_array($role->id, $selRoles))checked=checked@endif class="form-check-input" value="{{ $role->id }}" id="{{ $role->id }}">
  {{ $role->name }}
</div>
@endforeach

如果角色的 id 在您的选定角色数组中,该部分@if(in_array($role->id, $selRoles))checked=checked@endif将选中复选框。


推荐阅读