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

Posted

技术标签:

【中文标题】Laravel 重新提交表单验证仍然显示旧输入值【英文标题】:Laravel Resubmit Form Validation Still Show Old Input Value 【发布时间】:2018-02-12 11:06:35 【问题描述】:

重新提交表单验证后,数据保存到数据库,但旧表单数据没有清除

我用这个来验证:

$this->validate($request, [
    'branch' => 'required|not_in:---Select Branch---',
    'dep' => 'required|not_in:--- Select Department ---',
    'txt_username' => 'required|min:5|max:20',            
]);

插入数据库后,我重定向到路由:

return redirect()->route('newrec');

验证时我使用这段代码来记住我刚刚输入的旧数据:

value=" old('txt_username')"

如果我填写表格,我会通过清除所有旧数据重定向到路由newrec,如果我没有填写表格并且验证失败,它将显示我刚刚输入的旧文本。如果我在验证失败后完成并重新提交表单,我将重定向到 newrec 路由,但它仍然显示我刚刚输入的旧值,而数据已保存到数据库中。重新提交表单后如何清除。

【问题讨论】:

对问题的安静令人困惑的解释。你能澄清最后一段吗? @SagarGautam 当我在验证后重新提交表单,然后它会重定向到路由 newrec 但使用我刚刚输入的旧数据。重新提交表格后如何清除?? 假设您填写了几个字段并将其他字段留空,然后验证失败并且您填写的值出现在表单上。现在您完成表单,然后提交,然后重定向到仍显示旧数据的 newrec。这是我理解的问题吗? @SagarGautam:是的,这是我的问题 好的没问题:D 【参考方案1】:
   $validator = Validator::make($request->all(), [
        'name' => 'required|min:3',
        'email' => 'required|email|unique:users,email',
        'role' => 'required'
    ]);

    if ($validator->fails()) 
        return back()->withErrors($validator)
                    ->withInput();
    

    User::create([
        'name' => $request->name,
        'email' => $request->email,
        'password' => bcrypt("123456"),
        'role' => $request->role
    ]);

    return back()->with('success', 'Successfully saved');

这就是我解决问题的方法

【讨论】:

以上是关于Laravel 重新提交表单验证仍然显示旧输入值的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

使用 laravel 框架提交数据后清除表单输入

如何在 laravel 中输入所有数组并在字段下方显示验证错误

Laravel 4 - 显示带有旧数据输入以及数据库信息的编辑表单