如何在Laravel 5.7的Blade模板中获取原始输入?

时间:2018-12-15 02:50:44

标签: laravel laravel-5 input laravel-blade laravel-5.7

{{ old('my_field') }}可以检索字段的原始值。但就我而言,这还不够。我正在使用动态添加的字段。意思是,我不能确定字段my_collection.5.my_field是否存在。要获取错误消息和错误格式,我需要遍历所有动态添加的fieldset

@if (request()->input('collection'))
    @foreach(request()->input('collection') as $key => $item)
    <label class="label" for="collection.{{ $key }}.my_field">my field</label>
    <textarea
        type="text"
        id="collection.{{ $key }}.my_field"
        name="collection[{{ $key }}][my_field]"
        class="textarea {{ $errors->has('collection.' . $key . '.my_field') ? 'is-danger' : '' }}">
        {{ old('collection.' . $key . '.my_field') }}
    </textarea>
    @endforeach
@endif

但是request()->input('my_collection')Input::get('my_collection')返回null。它也不适用于简单字段(Input::get('my_simple_field')Input::get('my_simple_field'))。

如何访问Blade模板中的输入字段?

1 个答案:

答案 0 :(得分:0)

解决方案(在这种情况下就足够了)是old(...) helper。它提供对所有输入级别(“ root”除外,表示输入集本身)的访问。因此,针对该问题的功能可以实现如下:

@if (old('actions'))
    @foreach(old('actions') as $key => $action)
        ...
    @endforeach
@endif

不过,很高兴知道为什么request()->input('my_collection')Input::get('my_collection')不起作用以及如何访问输入集本身(例如,以便对其进行迭代)。


更新

可以使用old()来访问完整的输入集,而无需使用参数。