laravel 获取select input的'old'值

yk9xbfzb  于 2023-03-31  发布在  其他
关注(0)|答案(4)|浏览(147)

我正在验证我的注册表。
如果输入是一个常规输入,我可以填充前面的值,如果它像这样失败

<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>
g2ieeal7

g2ieeal71#

我建议把你所有的年龄放在一个数组中,并将该数组传递给视图:

$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,有2个选择的选项。Html总是选择第一个,这就是造成问题的原因。
第1点将检查是否有旧值可用,它不会将selected应用于第一个占位符选项。

pes8fvy9

pes8fvy92#

{!! Form::select('name', $varableyouwanttodisplay, old('name'), 
      ['id'=>'id', 'class' => 'form-control select2', 'data- 
      placeholder' => 'select','required', 'style' => 'width:100%']) !!}

试试上面的代码。

rks48beu

rks48beu3#

@php $selected = old('experience') ?: 66; @endphp

然后

{{ Form::select('experience', $experience, $selected, ['class' => 'form-control']) }}

这适用于刀片模板第一次加载并且没有“旧”值的情况,并且您需要针对该情况预定义所选选项(即66)。

rslzwgfq

rslzwgfq4#

这也很有效:

<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>

这将检查genderold value值和填充的select输入。如果您使用foreach填充输入类型,这也可以正常工作。

相关问题