【问题标题】:How to access form input after validation failure in Laravel 7在 Laravel 7 中验证失败后如何访问表单输入
【发布时间】:2021-07-03 10:42:25
【问题描述】:

我正在使用带有验证器外观的 Laravel 7 来验证表单提交。验证工作正常;但是我看不到从哪里访问旧表单信息以重新填充用户已经填写的字段。我可以看到->withErrors() 传递的错误,但我没有看到来自->withInput() 的任何输入。

这是在我的控制器方法中: // 验证响应 $validator = Validator::make($request->all(), [ 'question_1' => '必需', 'question_2' => '必需', 'question_3' => '必需', 'question_4' => '必需', 'question_5' => '必需', ]);

    if ($validator->fails()) {
        return redirect('/')
            ->withErrors($validator)
            ->withInput();
    }

但是,当我调试模板中的变量时,我看不到旧的输入数据:

@if($errors->any())
        {{ dd(  get_defined_vars()['__data'] ) }}

    @foreach ($errors->all() as $error)
        {{ $error }}<br/>
    @endforeach
@endif

array:4 [▼
  "__env" => Illuminate\View\Factory {#290 ▶}
  "app" => Illuminate\Foundation\Application {#2 ▶}
  "errors" => Illuminate\Support\ViewErrorBag {#351 ▶}
  "questions" => Illuminate\Database\Eloquent\Collection {#1319 ▶}
]

在上面的调试输出中,我得到了带有错误消息的errors 键,但我在变量中的任何地方都看不到旧输入。 questions 键是传递给模板的数据库结果集合,而不是旧输入。

验证失败后如何访问用户提交的旧表单输入?

【问题讨论】:

    标签: validation laravel-7


    【解决方案1】:

    这是一个微笑的问题,并且有有用的答案: How to redirect back to form with input - Laravel 5 您可以使用:

    return redirect()->back()->withInput(Input::all())
    

    在您的 HTML 中,您必须使用 value = {{ old('') }}。如果不使用它,您将无法取回值,因为会话将存储在它们的缓存中。

    <input type="text" name="name" value="{{old('name') }}" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 2017-10-22
      • 2017-05-02
      • 2019-03-13
      • 2015-05-13
      • 2014-03-06
      • 2013-09-29
      相关资源
      最近更新 更多