Laravel 使用数组选择的 Blade Form Multiselect 不起作用

Laravel Blade Form Multiselect selected using array not working

我试图让 multiselect 以一种形式工作,我正在使用 laravel 并向我的视图传递一个名为 correlated[= 的变量25=],一个ID数组,指的是select的模型相关的模型,这里是我对抗的代码:

@foreach($categories as $category)

                @foreach($correlated as $c)
                @if($c === $brand_id)
                @php($selected = "selected")
                @endif
                @endforeach
                <option class="text-center" value="{{ $category->id }}" selected="{{ $selected }}">{{ ucfirst($category->name) }}</option>
              @endforeach

我检查了 brand_id 和 $c 值,它们是正确的。有什么想法吗?


编辑: 已更正,似乎是最正确的方法,但仍然无效...

@php $selected = "" @endphp
            <select multiple name="categoriesField[]" class="form-control" size="{{ count($categories) }}">
              @foreach($categories as $category)
              @php $selected = '' @endphp
              @if(in_array($category->id, $correlated))
              @php $selected = 'selected' @endphp
              @endif            
                <option class="text-center" value="{{ $category->id }}" @php echo $selected @endphp>{{ ucfirst($category->name) }}</option>
              @endforeach
            </select>

edit 2:用上面的代码解决了,我的浏览器不知何故行为错误,没有显示 selected 选项,我想我会检查唯一的答案.

你可以试试这个

在您的 <select> 标签将品牌 ID 存储在变量中之前

@php $brandIds = collect($correlated)->toArray() @endphp

在您的 <select> 标签内使用 php in_arrya() 函数检查您的 $brand_id 变量的值是否在 $brandIds 数组内,然后 select 该选项为 selected。

@foreach($categories as $category)
   <option class="text-center" value="{{ $category->id }}" @if(in_array($brand_id, $brandIds)) selected @endif>{{ ucfirst($category->name) }}</option>
@endforeach

希望这对你有用:)