验证失败时,Laravel 5.3 表单不保留旧输入

Posted

技术标签:

【中文标题】验证失败时,Laravel 5.3 表单不保留旧输入【英文标题】:Laravel 5.3 forms not retaining old input when validation fails 【发布时间】:2017-05-02 08:34:54 【问题描述】:

我有一个表单,用户可以在其中创建项目。然而,当表单被提交并且没有通过验证时,旧的输入不会被记住并且被简单地擦除,这对用户来说是令人沮丧的。

我为此使用 laravelcollective 表单,我的 html 看起来像:

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

即使我这样输入旧值,它也不会保留旧输入

   Form::text('name', old('name') , ['placeholder' => 'hello world' ,'class' => 'form-control']) 

我在后端存储项目的方法如下所示,其中 ItemRequest 负责验证。

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 【参考方案1】:

在重定向路由方法的末尾使用withInput()方法,像这样:

// If validation failed, use this method to make the old inputs available in the view
return redirect()->route('some.other.route')->withInput();

查看更多关于Old Inputs in Laravel

希望这会有所帮助!

【讨论】:

验证失败时不会调用这个,因为他使用了Form Requests。 @Vuldo - 不错,我已经更新了我的答案!谢谢:D

以上是关于验证失败时,Laravel 5.3 表单不保留旧输入的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3 验证唯一

验证失败时停止刷新表单 Laravel

Laravel 5.3 - 避免在 phpunit 测试中发送松弛通知

数据当用户在验证失败(Python,Django)时被重定向回表单时如何保留表单?

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

Laravel 和 Vue 身份验证表单在登录失败时重新加载