これが私の選択オプションです
<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が文字列であることを期待しています
コントローラーから選択値を渡す場合:
$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>
少し遊んだ後、私はこれを思いつきました、そしてそれは素晴らしくうまくいくようです
<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>
収集機能の活用は100%間違っているかもしれませんが、私のテストの多くでは問題なく機能します。 「recommended_food」にデータがない場合、in_arrayには配列が必要であり、nullではうまく機能しないためエラーが発生するため、実際にこれを試したのはMPSのおかげです。このようなことをするというアイデアを思いついた。
@if (old("options")){{ (in_array($option->id, old("options")) ? "selected":"") }}@endif
インラインですが、私には醜く見えるので、長い話は短くて、代わりに次を使用しています
{{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}
これが他の人に役立つことを願っています!!
質問は、複数を選択して尋ねられました。
「指定」というフィールドがあり、1つのレコードを追加するために複数の指定を選択する必要があり、フィールド名がforWhom
追加中
これを追加する必要があります{{(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>
編集中
追加する必要があります
{{ (collect(old('forWhom'))->contains($key)) ? 'selected':'' }}
{{ (in_array($key,$info->forWhom)) ? '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':'' }}
{{ (in_array($key,$info->forWhom)) ? 'selected' : ''}}
/>
{{ $value }}
</option>
@endforeach
</select>
laravel 5.4収穫を選択して5.4で複数選択ドロップダウンで選択したすべてのIDを選択
ありがとう
私にとっては、Jilson Thomasの答えはmultiple selectでは機能しなかったため、次のように変更しました。
{{ in_array($food, old("recommended_food")) ? "selected":"") }}
これが私のやり方で、とてもダイナミックです。
<select id="gender" name="gender">
<option>Select</option>
<option value="M">Male</option>
<option value="F">Female</option>
</select>
<script>
var currentGender = null;
for(var i=0; i!=document.querySelector("#gender").querySelectorAll("option").length; i++)
{
currentGender = document.querySelector("#gender").querySelectorAll("option")[i];
if(currentGender.getAttribute("value") == "{{ old("gender") }}")
{
currentGender.setAttribute("selected","selected");
}
}
</script>
JSON
データを解析していて、array
として複数選択を再設定する必要があり、1つのテーブルしか必要としておらず、keys
がarray
メソッドから__SOME_VARIABLEのサプライに渡されたため、show
が__SOME_VARIABLEに供給されていたため、controller
を使用していませんでした。テンプレートの値(私の場合はedit.blade.php
テンプレート(create
テンプレート)のクラッドリソース)。
これは私のために働きました、そして私がビューでそれを得ることができる最もきれいでした。
<select id="recommended_food" multiple="multiple" size=3 style='height: 100%;' name="recommended_food[]">
@if ($food->recomemded_food)
{{ ($val = 'Fries')
&& $chosen = in_array($val, $food->recommended_food)
? 'selected':null}}
<option value="{{$val}}" {{$chosen}}>{{$val}}</option>
{{ ($val = 'Hot Dogs')
&& $chosen = in_array($val, $food->recommended_food)
? 'selected':null}}
<option value="{{$val}}" {{$chosen}}>{{$val}}</option>
{{ ($val = 'Hamburgers')
&& $chosen = in_array($val, $food->recommended_food)
? 'selected':null}}
<option value="{{$val}}" {{$chosen}}>{{$val}}</option>
@endif
</select>
この質問に対する最良の答えはこれは以下です
@if(count($categories) > 0)
@foreach($categories as $category)
<option value="{{ $category->id }}" {{ (old('lawyer_fields') == null ? '' : in_array($category->id ,old('lawyer_fields')) ? "selected":"") }}>
{{ $category->name }}
</option>
@endforeach
@else
<option disabled>بدون انتخاب</option>
@endif