带有复选框的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

最新更新