laravel刀片中多个选择选项中的旧值

Jac*_* Ng 10 php arrays laravel laravel-5

这是我的选择选项

<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>
Run Code Online (Sandbox Code Playgroud)

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

@foreach (explode(',',old('recomemded_food')) as $recomemded_food) 
{{$recomemded_food}}
@endforeach
Run Code Online (Sandbox Code Playgroud)

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

Car*_*nes 25

玩了一下之后,我想出了这个,它看起来非常出色

<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>
Run Code Online (Sandbox Code Playgroud)

在利用collect函数时我可能100%错误,但它在我的许多测试中都能正常工作.我想感谢MPS,因为这是你的例子,真的让我尝试这个,因为当"recommended_food"中没有数据时你会引发一个错误,因为in_array需要一个数组并且无法正常使用null所以我来了做这样的事情的想法.

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

内联,但看起来很丑的男人这么长的故事,我正在使用以下代替

{{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}
Run Code Online (Sandbox Code Playgroud)

希望这有助于其他人!!


Jil*_*mas 8

如果从Controller传递选择值:

$recommended_foods = ["American Black Bear",
                       "Asiatic Black Bear",
                       "Brown Bear",
                       "Giant Panda"];
Run Code Online (Sandbox Code Playgroud)

并在视图中:

<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>
Run Code Online (Sandbox Code Playgroud)

  • 该问题被要求进行多项选择,您给出的答案将适用于一次选择。不知道您如何获得更多选票。 (2认同)

Sar*_*roj 8

该问题被要求选择多项。

假设您有一个名为 designation 的字段,并且您需要选择多个指定来添加 1 条记录,并且字段名称为forWho

添加期间

您需要添加此{{ (collect(old('forWhom'))->contains($key)) ? 'selected':'' }} 代码和平到您的选项标签

看起来像

<select id="forWhom" name="forWhom[]" multiple class="form-control chosen">
    <option value="">--- Select ---</option>
    @foreach ($desgInfo as $key => $value)
        <option value="{{ $key }}" 
           {{ (collect(old('forWhom'))->contains($key)) ? 'selected':'' }}  />
           {{ $value }}
        </option>
    @endforeach
</select>
Run Code Online (Sandbox Code Playgroud)

编辑期间

你需要添加

{{ (collect(old('forWhom'))->contains($key)) ? 'selected':'' }} 

{{ (in_array($key,$info->forWhom)) ? 'selected' : ''}}
Run Code Online (Sandbox Code Playgroud)

看起来像

<select id="forWhom" name="forWhom[]" multiple class="form-control chosen">
        <option value="">--- Select ---</option>
        @foreach ($desgInfo as $key => $value)
            <option value="{{ $key }}" 
               {{ (collect(old('forWhom'))->contains($key)) ? 'selected':'' }} 
               {{ (in_array($key,$info->forWhom)) ? 'selected' : ''}}  
               />
               {{ $value }}
            </option>
        @endforeach
    </select>
Run Code Online (Sandbox Code Playgroud)

在 Laravel 5.4 的多选下拉列表中选择所有选定的 id,并选择收获

谢谢

  • 这对我有用: `{{ (collect(old('forWhom'))-&gt;contains($key)) ?'已选择':'' }} ` (2认同)