2017-04-02 50 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> 

我怎样才能落实到上述情况,因为似乎没有成为一个地方,我可以不覆盖一个增加价值?谢谢。

回答

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> 

您可以从第一个选项中删除'selected'。它会被默认选中,因为它是第一个。如果old()存在,那么它将执行检查。