Laravel 5.8 验证错误 return 到所有输入的特定视图 -> 旧的不工作

Laravel 5.8 on validation error return to specific view with all input -> old not working

TLDR;

(In Laravel 5.8) Upon validation error, how can I return to a specific view with all input and the errors?

我正在创建一个多步骤表单,我需要在其中验证每个步骤的输入。因此,我创建了第一个页面,然后更新后续页面。

在第二页上,当验证器失败时,我返回特定视图,因为我希望它转到此部分而不是表单的开头。我还返回错误和失败时的输入。

控制器:

if ($validator->fails()) {
    return view('partials.question_02_' . $type)
        ->with('type', $type)
        ->with('id', $id)
        ->withErrors($validator)
        ->withInput($request->all());
}

这是我的验证逻辑:

$validator = Validator::make($request->all(), [
    'email'               => 'required',
    'first_name'          => 'required',
    'last_name'           => 'required',
    'phone'               => 'required',
]);

这样,我就可以返回到特定视图并查看验证错误。但是,我无法收到旧的输入。

Blade下面会显示erro(出现error class),但是不会显示旧的input.

<input class="@if ($errors->has('first_name')) error @endif" 
type="text" name="first_name" placeholder="First Name" value="{{ old('first_name') }}">

*注意,为了便于阅读,我只把它放在两行

奇怪的是,如果我死掉并转储请求,我可以看到所有输入:

dd($request->all());

但是,如果我尝试从会话中获取它,我看不到任何输入:

@if($errors)
    {{var_dump(Session::all())}}
@endif

知道为什么 {{ old('first_name') }} 在这种情况下不起作用吗?

谢谢!

您正在返回一个视图 return view() 而您需要 return 重定向 return redirect() 因为 return 视图将生成一个新页面而 old() 不会工作。

所以

return view('partials.question_02_' . $type)

使用

return redirect()

&在你的情况下

redirect()->action('LoginController@secondPage'); //you controller and method handling your second page