我正在验证我的注册表格。
如果输入是常规输入,如果它像一样失败,我可以填充以前的值
<input type="tel" name="phone" value="{{old('phone')}}">
如何填充选择选项的值?
<div class="input--select">
<label>Age Range <span>*</span></label>
<select name="age_range" class="age-range" value="{{old('age_range')}}" required>
<option selected disabled>Select your age range</option>
<option value="18-25">18-25</option>
<option value="26-35">26-35</option>
<option value="36-45">36-45</option>
<option value="46-55">46-55</option>
<option value="56-65">56-65</option>
<option value="66-75">66-75</option>
<option value="75+">75+</option>
</select>
@if ($errors->has('age_range')) <span class="error-message">Age range option is required.</span> @endif
</div>
我建议将您所有的年龄都放在一个数组中,并将该数组传递给视图:
$ages = ['18-25','25-50','50-75','75+']; // More dynamic and you can extend in anytime
现在更改html:
<div class="input--select">
<label>Age Range <span>*</span></label>
<select name="age_range" class="age-range" value="{{old('age_range')}}" required>
// 1. first change which is creating your problem
<option {{ old('age_range') ? "" : "selected" }} disabled>Select your age range</option>
// 2. This is just optimization for short code
@foreach($ages as $age)
<option {{old('age_range') ==$age" ? $selected : ""}} value="{{$age}}">{{$age}}</option>
@endforeach
</select>
@if ($errors->has('age_range')) <span class="error-message">Age range option is required.</span> @endif
</div>
因此,在第1点中,您总是使用具有第一个选项的selected
。
假设您的旧值为46-55
你的html看起来像:
<select name="age_range" class="age-range" value="{{old('age_range')}}" required>
<option selected disabled>Select your age range</option>
<option value="18-25">18-25</option>
<option value="26-35">26-35</option>
<option value="36-45">36-45</option>
<option selected value="46-55">46-55</option>
<option value="56-65">56-65</option>
<option value="66-75">66-75</option>
<option value="75+">75+</option>
</select>
如果你看一下上面的html,有两个选择。Html总是选择第一个,这就是造成问题的原因。
要点1。将检查是否有旧值可用,则不会将selected
应用于第一个占位符选项。
{!! Form::select('name', $varableyouwanttodisplay, old('name'),
['id'=>'id', 'class' => 'form-control select2', 'data-
placeholder' => 'select','required', 'style' => 'width:100%']) !!}
像上面的代码一样尝试。
@php $selected = old('experience') ?: 66; @endphp
和
{{ Form::select('experience', $experience, $selected, ['class' => 'form-control']) }}
这适用于第一次加载刀片模板并且没有"旧"值的情况,并且您需要为该情况预定义选定选项(即66(。
这也很好用:
<label for="gender" class="form-label">Gender</label>
<div class="input-group"> <span class="input-group-text"><i class='bx bx-male-sign'></i></span>
<select class="form-control form-select border-start-0" id="gender" name="gender" required value="{{old('gender')}}"/>
<option value="" selected disabled>Select gender</option>
<option value="Female" @if(old('gender') == 'Female') selected @endif>Female</option>
<option value="Male" @if(old('gender') == 'Male') selected @endif>Male</option>
</select>
</div>
这将使用填充的选择输入检查gender
的old value
值。如果使用foreach
填充输入类型,这也可以很好地工作。