You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Blade动态生成角色复选框出现重复内容如何解决

问题原因

你出现角色重复的核心问题是嵌套循环的逻辑错误:

  • 外层循环遍历全部角色,内层又遍历当前用户已选的角色ID数组$selRoles,每一个外层角色都会和内层所有已选ID逐一比对,每次比对都会输出一次该角色的复选框,如果用户有3个已选角色,每个角色就会重复输出3次,和你看到的重复现象完全匹配。
  • 额外小问题:你当前的复选框name属性为rol,没有加数组标识[],后续表单提交时只能拿到最后一个选中的角色ID,无法提交多个选中的角色。
修复后的Blade代码

删除内层循环,直接用in_array判断当前角色ID是否在已选数组中即可:

@foreach($roles as $rol)
<div class="col-md-4">
    <input 
        type="checkbox" 
        name="rol[]" 
        @if(in_array($rol->id, $selRoles)) checked @endif
        class="form-check-input" 
        value="{{ $rol->id }}" 
        id="role-{{ $rol->id }}"
    >
    <label class="form-check-label" for="role-{{ $rol->id }}">
        {{ $rol->name }}
    </label>
</div>
@endforeach
控制器代码优化建议

你控制器中$usuario->load('roles');是冗余代码,前面执行$usuario->roles->pluck('id')->toArray()的时候已经完成了角色关联的加载,这行可以直接删除。

内容的提问来源于stack exchange,提问作者scorpions78

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:45:08