私はこのコードを持っています:
_<select required="required" class="form-control" name="title">
<option></option>
@foreach ($titles as $key => $val)
@if (stristr($key, 'isGroup'))
<optgroup label="{{ $val }}">
@else
<option value="{{ $key }}">{{ $val }}</option>
@endif
@endforeach
</select>
_
したがって、フォームにエラーがある場合は、Redirect::route('xpto')->withInput()->withErrors($v)
行を使用します。ただし、選択フィールドに再入力することはできません。たとえばJavaScriptを使用せずにこれを行う方法はありますか?
解決策は、Input::old()
と$key
変数。
@if (Input::old('title') == $key)
<option value="{{ $key }}" selected>{{ $val }}</option>
@else
<option value="{{ $key }}">{{ $val }}</option>
@endif
また、?
演算子を使用して、@if @else @endif
構文。変化する:
@if (Input::old('title') == $key)
<option value="{{ $key }}" selected>{{ $val }}</option>
@else
<option value="{{ $key }}">{{ $val }}</option>
@endif
単に:
<option value="{{ $key }}" {{ (Input::old("title") == $key ? "selected":"") }}>{{ $val }}</option>
少し遊んだ後、私はこれを思いついた、それは見事に動作するようだ
<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%間違っているかもしれませんが、多くのテストでうまく機能します。サイトで他のいくつかの投稿を見た後、誰かがin_array($ needle、$ array)関数を活用することをお勧めしましたが、私のold( 'options')がnullの場合はin_arrayが必要なのでエラーになることに気づいたので、賭けます配列を推測しました。い解決策であるにもかかわらず、その解決策を見つけた後、collectメソッドを試しました。とにかくい解決策は次のとおりです
@if (old("options")){{ (in_array($option->id, old("options")) ? "selected":"") }}@endif
インラインですが、私にはugいように見えますが、長い話は短く、代わりに次のものを使用しています
{{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}
これが他の人に役立つことを願っています!!
これは、非複数選択フィールドでは機能しないようですが、それでも機能するフィールドでは戻りません。
<select name="gender" class="form-control" id="gender">
<option value="">Select Gender</option>
<option value="M" @if (old('gender') == "M") {{ 'selected' }} @endif>Male</option>
<option value="F" @if (old('gender') == "F") {{ 'selected' }} @endif>Female</option>
</select>
最善の方法は次のとおりです
<select class="form-control" name="team" id="team">
<option value="">---------Choose Team---------</option>
@foreach($teams as $team)
<option value="{{$team->id}}" {{(old('team')==$team->id)? 'selected':''}}>{{$team->name}}</option>
@endforeach
</select>
eg.<select name="title">
<option value="1" {{ old('title') == 1 ? 'selected' : '' }}>
Item 1
</option>
<option value="2" {{ old('title') == 2 ? 'selected' : '' }}>
Item 2
</option>
</select>
Inputクラスを使用する代わりに、old()ヘルパーを使用してこれをさらに短くすることもできます。
<option {{ old('name') == $key ? "selected" : "" }} value="{{ $value }}">
<select class="form-control" name="kategori_id">
<option value="">-- PILIH --</option>
@foreach($kategori as $id => $nama)
@if(old('kategori_id', $produk->kategori_id) == $id )
<option value="{{ $id }}" selected>{{ $nama }}</option>
@else
<option value="{{ $id }}">{{ $nama }}</option>
@endif
@endforeach
</select>
<option value="{{ $key }}" {{ Input::old('title') == $key ? 'selected="selected"' : '' }}>{{ $val }}</option>
さて、私の2セント、Laravelのold()関数のデフォルト値を使用しています。
<select name="type">
@foreach($options as $key => $text)
<option @if((int) old('type', $selectedOption) === $key) selected @endif value="{{ $key }}">{{ $text }}</option>
@endforeach
</select>
ここでの私の解決策は、オプションの重複を避けるためにループすることです
<select class="form-control" name="status" >
<?php $lists = ['Current', 'Win', 'Lose']; ?>
@foreach($lists as $list)
<option value={{$list}} {{(old('status') == $list?'selected':'')}} >{{$list}}</option>
@endforeach
</select>
これは理解して実装するのは非常に簡単です。
<select class="form-control m-input m-input--air">
@foreach ($countries as $key)
@if( $key->name == $user->country )
<option value="{{ $key->name }}" selected="selected"> {{ $key->name }}</option>
@else
<option value="{{ $key->name }}"> {{ $key->name }}</option>
@endif
@endforeach
</select>
<select>
@if(old('value') =={{$key}})
<option value="value" selected>{{$value}}</option>
@else
<option value="value">{{$value}}</option>
@endif
</select>