在刀片中动态创建复选框

Posted

技术标签:

【中文标题】在刀片中动态创建复选框【英文标题】:create dynamically checkbox in blade 【发布时间】:2021-12-21 11:09:21 【问题描述】:

我正在准备在我的刀片中创建复选框列表,其中包含我在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

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

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

【问题讨论】:

@AkshayGireesh 感谢您的回复,但我不太明白您告诉我的内容 【参考方案1】:

您的角色会重复,因为您使用了两个 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

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

【讨论】:

以上是关于在刀片中动态创建复选框的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 如何在视图中创建(匿名)动态刀片组件

在刀片 foreach 循环中使用 JS 动态更改 div CSS 背景

如何从数组动态创建复选框列表?

动态创建的复选框不可点击

在 jQuery Mobile 中使用复选框动态创建产品列表非常困难

使用动态创建的复选框和数组维护复选框值