2017-04-02 10 views
0

テキストフィールドと同様に、ビューにエラーが返された場合は、選択した要素に以前に送信されたデータ、たとえばvalue="{{ old('element_name_here') }}"を入力します。エラーが返された場合は、選択ドロップダウンに値を設定します

現在のビュー:

<select class="form-control" id="input" name="{{ $questionDetail->question_number }}" required="required"> 
    <option disabled selected value> -- Select an option --</option> 
     @foreach($answers as $answer) 
      <option value="{{ $answer->value }}">{{ $answer->question }}</option> 
     @endforeach 
</select> 

どのように私は私は1つを上書きせずに値を追加することができる場所があるように思われないよう、上記のシナリオにそれを実装することができますか?ありがとうございました。

答えて

0

あなたはこのような何かが動作するはずですので、選択した前の値をマークする必要があります。フォームで多くの作業をするとき

<select class="form-control" id="input" name="{{ $questionDetail->question_number }}" required="required"> 
    <option disabled @if(!old($questionDetail->question_number)) selected @endif value> -- Select an option --</option> 
     @foreach($answers as $answer) 
      <option value="{{ $answer->value }}" @if(old($questionDetail->question_number) == $answer->value) selected @endif>{{ $answer->question }}</option> 
     @endforeach 
</select> 

は、おそらくそれはhttps://laravelcollective.com/docs/5.3/html(分岐5.4)

+0

を使用することをお勧めします、ありがとうございました。無効にしたオプションにデフォルト設定するのではなく、フォームが提出されていないのにエラーが返されていない場合でも、ドロップダウンからの回答がデフォルトになります。 – Ben

+0

@Benどのオプションにも空の値がありますか? –

+0

はい、上部のオプションは空の無効な値でした。それは大丈夫ですが、私はそれを削除して、デフォルトの答えを持って満足しています。ありがとうございました! – Ben

1
<option 
    value="{{ $answer->value }}" 
    {{ $answer->value == old(questionDetail->question_number) ? 'selected' : '' }}> 
     {{ $answer->question }} 
</option> 

[選択済み]は、最初のオプションから削除できます。最初に選択されるため、デフォルトで選択されます。 old()が存在する場合は、チェックを行います。

関連する問題