如何解决带有复选框的 Laravel foreach 循环
我有以下两个数组
$vendor_permissions = [1,2,3,4]
$assigned_vendor_permissions = [1,3]
现在,我只想检查那些具有 $assigned_vendor_permissions
的复选框,这意味着,在这种情况下,根据 $vendor_permissions
有 4 个复选框,并且必须检查 2 个复选框,因为已分配权限 $assigned_vendor_permissions [1,3]
给用户。
我尝试了下面的循环,但我无法成功,因为它重复了复选框 超过4次,
@foreach ( $vendor_permissions as $vendor_permission )
@if ($assigned_vendor_permissions->isNotEmpty())
@foreach ( $assigned_vendor_permissions as $rolem )
<td style="width: 15%"><label class="checkBox"><input type="checkBox" name="permissions[]" id="{{ $vendor_permission->name }}"
{{ $vendor_permission->id == $rolem->id ? 'checked="checked"' : '' }} value="{{ $vendor_permission->id }}""><span></span></label></td>
@endforeach
@else
<td style="width: 15%"><label class="checkBox"><input type="checkBox" name="permissions[]" id="{{ $vendor_permission->name }}"
value="{{ $vendor_permission->id }}""><span></span></label></td>
@endif
@endforeach
如何根据数组选中和取消选中这些复选框?
dd($assigned_vendor_permissions);
的输出
array:2 [▼
0 => array:6 [▶
"id" => 1
"name" => "vendor_create"
"guard_name" => "web"
"created_at" => null
"updated_at" => null
"pivot" => array:2 [▶
"role_id" => 2
"permission_id" => 1
]
]
1 => array:6 [▶
"id" => 2
"name" => "vendor_read"
"guard_name" => "web"
"created_at" => null
"updated_at" => null
"pivot" => array:2 [▶
"role_id" => 2
"permission_id" => 2
]
]
]
解决方法
使用 in_array 代替循环
@foreach ( $vendor_permissions as $vendor_permission )
<td style="width: 15%">
<label class="checkbox">
<input type="checkbox" name="permissions[]"
id="{{ $vendor_permission->name }}"
value="{{ $vendor_permission->id }}"
{{(is_array($assigned_vendor_permissions)&&in_array($vendor_permission->id,$assigned_vendor_permissions))?"checked":null}}
>
<span>
</span>
</label>
</td>
@endforeach
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。