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