【问题标题】:How to keep cloned field value after POST in PHP/Laravel如何在 PHP/Laravel 中 POST 后保留克隆的字段值
【发布时间】:2020-06-26 18:02:36
【问题描述】:

我正在为我的应用程序使用 Laravel。那就是具有可克隆的字段。如果验证失败,表单正在读取并丢失所有克隆字段的值。它适用于普通字段,但适用于所有克隆字段。

保持代码更小,我只发布了两个可克隆字段,实际上, 克隆组大约有 5 个字段。

<select name="next_station_id[]"
        class="select2 next-station-select cloner-field form-control @error('next_station_id') is-invalid @enderror"
        required>
    <option>Select Next Station</option>
    @foreach($stationsData as $id => $name)
        <option value="{{$id}}"
            {{ (isset($route) && $route->station->id == $id) ? 'selected' : ($id == old('next_station_id') ? 'selected' : NULL) }}>{{\Illuminate\Support\Str::of($name)->ucfirst()}}</option>
    @endforeach
</select>

<input type="number" name="station_order[]"
       data-inputmask-regex="([0-5]?[0-9]):([0-5]?[0-9])"
       class="cloner-field station-order form-control @error('station_order') is-invalid @enderror"
       placeholder="{{__('admin.route.form.order')}}"
       value="{{ isset($route->station_order) ? $route->station_order :  old('station_order') }}"
       autocomplete="off" required>

【问题讨论】:

  • 设置控制器如 return redirect()->back()->with('error_message', 'message')->withInput(['station_order'=>'XXX','next_station_id'= >'YY']);并在视图中 isset(old('next_station_id'))
  • 我已经为该字段设置了old。这里的情况有点不同。问题是可克隆字段。它生成其值的数组。您所说的适用于单个领域。我如何在克隆字段中做到这一点?
  • 现在我明白了...,您的意思是动态字段,就像name="station_order[] 是这里的动态输入字段
  • @STA 是的,这是正确的。
  • 它也可以在create方法中使用,如果next_station_id[]有旧数据,则进行foreach循环,否则no

标签: php laravel


【解决方案1】:

最后,我解决了这个问题。感谢@STA 的帮助。

// Loop through any of the field or 
// you can use for loop by getting the highest number
@foreach(old('station_id') as $i => $field)
    
    <select name="next_station_id[]"
            class="select2 next-station-select cloner-field form-control @error('next_station_id') is-invalid @enderror"
            required>
        <option>Select Next Station</option>
        @foreach($stationsData as $id => $name)
            <option value="{{$id}}"
                {{ $id == old('next_station_id')[$i] ? 'selected' : NULL ) }}>{{\Illuminate\Support\Str::of($name)->ucfirst()}}</option>
        @endforeach
    </select>
    
    <input type="number" name="station_order[]"
           data-inputmask-regex="([0-5]?[0-9]):([0-5]?[0-9])"
           class="cloner-field station-order form-control @error('station_order') is-invalid @enderror"
           placeholder="{{__('admin.route.form.order')}}"
           value="{{ isset($route->station_order) ? $route->station_order :  old('station_order') }}"
           autocomplete="off" required>
    
@endforeach

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-09
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多