(Laravel)表单验证不返回旧输入

Posted

技术标签:

【中文标题】(Laravel)表单验证不返回旧输入【英文标题】:(Laravel) Form validation not returning with old input 【发布时间】:2017-05-02 19:15:12 【问题描述】:

我正在使用 Laravel 5.3。我有一个表单,当验证失败时,它没有用旧输入填充字段。表单如下所示:

 Form::open(['route' => 'my.route', 'class' => 'form-horizontal', 'files' => true]) 

<div class="form-group">
     Form::label('name', 'Name', ['class' => 'control-label col-md-3']) 
    <div class="col-md-9">
         Form::text('name', null, ['placeholder' => 'hello world' ,'class' => 'form-control']) 
    </div>
</div>

<div class="form-group">
     Form::label('description', 'Description', ['class' => 'control-label col-md-3']) 
    <div class="col-md-9">
         Form::textarea('description', null, ['placeholder' => 'hello world', 'class' => 'form-control']) 
        <span>some sub-text</span>
    </div>
</div>

<div class="form-group">
     Form::label('date', 'Date', ['class' => 'control-label col-md-3']) 
    <div class="col-md-9">
         Form::text('date', null, ['placeholder' => 'hello world', 'class' => 'form-control']) 
    </div>
</div>

 Form::close() 

我正在处理这样的信息:

    public function store(ItemRequest $request, ImageMagick $imageMagick)
    
        $item = new Item;
        $item->name = $request->name;
        $item->description = $request->description;
        $item->date = $request->date;

        $item->save();
        return redirect()->route('some.other.route');
    

我正在自己的表单请求文件“ItemRequest”中进行验证,如下所示:

class ItemRequest extends FormRequest

    public static $rules = [
        'name' => 'required|min:5|max:255',
        'description' => 'required|min:50',
        'date' => 'required'
    ];

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    
        return true;
    

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    
        if ($this->isMethod('post')) 
            return $this->createRules();
        

        return $this->updateRules();
    

    public function createRules()
    
        return self::$rules;
    

    public function updateRules()
    
        return array_merge(
            self::$rules,
            $this->otherRules()
        );
    

    public function otherRules()
    
       return ['age' => "required"];
    

我认为问题在于ItemRequest。我已经尝试在 store 方法中将 ->withInput() 添加到我的 return 中,但旧的输入仍然没有被保留。

  return redirect()->route('some.other.route')->withInput();

但它并没有做出改变。

编辑:刷新页面时我正在清除旧输入。

【问题讨论】:

【参考方案1】:

您必须在输入字段区域中包含value=" Input::old('Code')"。所以在你的描述文本区域,你可以使用,

<div class="form-group">
     Form::label('description', 'Description', ['class' => 'control-label col-md-3']) 
    <div class="col-md-9">
         Form::textarea('description', null, ['placeholder' => 'hello world', 'class' => 'form-control','value'=>'Input::old('description')']) 
        <span>some sub-text</span>
    </div>
</div>

【讨论】:

这仍然不起作用。我试过转储旧值,它是空的。

以上是关于(Laravel)表单验证不返回旧输入的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 5 中的表单请求验证后传递旧输入

Laravel 重新提交表单验证仍然显示旧输入值

Laravel 7 - 如何正确显示旧输入/s?

干货Laravel --Validate (表单验证) 使用实例

Vue 和 Laravel 表单验证不返回 422 响应

laravel中使用FormRequest进行表单验证,验证异常返回JSON