Définir L'option sélectionnée avec L'ancienne entrée Laravel / Blade
j'ai ce code:
<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>
donc quand le formulaire a des erreurs j'utilise la ligne Redirect::route('xpto')->withInput()->withErrors($v)
. Mais je ne peux pas repeupler les champs select. De toute façon de le faire sans l'aide de JavaScript par exemple?
11 réponses
vous pouvez aussi utiliser le ?
opérateur pour éviter d'avoir à utiliser @if @else @endif
syntaxe. Modifier:
@if (Input::old('title') == $key)
<option value="{{ $key }}" selected>{{ $val }}</option>
@else
<option value="{{ $key }}">{{ $val }}</option>
@endif
Simplement:
<option value="{{ $key }}" {{ (Input::old("title") == $key ? "selected":"") }}>{{ $val }}</option>
La solution est de comparer Input::old()
$key
variable.
@if (Input::old('title') == $key)
<option value="{{ $key }}" selected>{{ $val }}</option>
@else
<option value="{{ $key }}">{{ $val }}</option>
@endif
Après avoir joué un peu, j'ai trouvé ça et il semble fonctionner juste magnifiquement
<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>
je peux me tromper à 100% en utilisant la fonction collect mais cela fonctionne très bien sur beaucoup de mes tests. Après avoir vu quelques autres messages sur le site, j'ai vu quelqu'un recommander de tirer parti de la fonction in_array($needle, $array) mais après avoir remarqué que si mon ancien('options') était nul, il y aurait erreur car il nécessite in_array requires, je parie que vous avez deviné un tableau. Donc, après avoir trouvé la solution à cette solution bien que laid j'ai joué avec la méthode de collecte parce qu'après tout, nous utilisons larval droit! en tout cas, la mauvaise solution est la suivante
@if (old("options")){{ (in_array($option->id, old("options")) ? "selected":"") }}@endif
inline mais l'homme qui semble laid pour moi c'est une longue histoire courte, je suis en utilisant ce qui suit
{{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}
Espérons que cela aide les autres!!
cela ne semble pas fonctionner pour un champ select Non multiple ill revenir avec un qui fonctionne pour cela cependant.
<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>
La meilleure façon de faire est de suivre
<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>
<option value="{{ $key }}" {{ Input::old('title') == $key ? 'selected="selected"' : '' }}>{{ $val }}</option>
ma solution ici est de boucler, juste pour éviter l'option Dupliquer
<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>
@if(old('value') =={{$key}})
<option value="value" selected>{{$value}}</option>
@else
<option value="value">{{$value}}</option>
@endif
</select>
au lieu d'utiliser la classe Input, vous pouvez aussi utiliser l'ancien helper() pour rendre cela encore plus court.
<option {{ old('name') == $key ? "selected" : "" }} value="{{ $value }}">
OK, mes 2 cents, en utilisant la valeur par défaut de L'ancienne fonction() de Laravel.
<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="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>