拉拉维尔刀片中多选选项中的旧值

2022-08-30 21:25:43

这是我的选择选项

<select name="recomemded_food[]" value="" style="width:560px;" multiple class="chosen-select" >
<option value="American Black Bear">American Black Bear</option>
<option value="Asiatic Black Bear">Asiatic Black Bear</option>
<option value="Brown Bear">Brown Bear</option>
<option value="Giant Panda">Giant Panda</option>
</select>

下面是我尝试使用 foreach 循环来获取数组值的代码。但是我收到以下错误:

@foreach (explode(',',old('recomemded_food')) as $recomemded_food) 
{{$recomemded_food}}
@endforeach

错误消息:explode() 期望参数 2 为字符串


答案 1

在玩了一会儿之后,我想出了这个,它似乎工作得非常出色

<select name="options[]" id="options" class="form-control" multiple>
    @foreach($settings->includes->get('optionList') as $option)
        <option value="{{ $option->id }}" {{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}>{{ $option->name }}</option>
    @endforeach
</select>

我在利用 collect 函数时可能是 100% 错误的,但它在我的许多测试中工作正常。我想对MPS说声谢谢,因为正是你的例子让我尝试了一下,因为当“recommended_food”中没有数据时,你会拉出一个错误,因为in_array需要一个数组,并且不能很好地与null一起工作,所以我然后想出了做这样的事情的想法。

@if (old("options")){{ (in_array($option->id, old("options")) ? "selected":"") }}@endif

内联但男人,对我来说看起来很丑陋,长话短说,我用的是以下代替

{{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}

希望这有助于其他人!


答案 2

如果从控制器传递选择值:

$recommended_foods = ["American Black Bear",
                       "Asiatic Black Bear",
                       "Brown Bear",
                       "Giant Panda"];

和视图中:

<select required="required" class="form-control" name="recommended_food">
    @foreach ($recommended_foods as $key => $food)
        <option value="{{ $food}}" {{ (old("recommended_food") == $food ? "selected":"") }}>{{ $food }}</option>
    @endforeach
</select>