Php 如何在Laravel 5.4中显示验证错误-重置密码

Php 如何在Laravel 5.4中显示验证错误-重置密码,php,laravel,blade,laravel-5.4,Php,Laravel,Blade,Laravel 5.4,我试图在../app/Http/Controllers/Auth/ResetPasswordController.php中捕获来自validate的错误消息: public function reset(Request $request) { $this->validate($request, $this->rules(), $this->validationErrorMessages()); $response = $this->

我试图在
../app/Http/Controllers/Auth/ResetPasswordController.php中捕获来自validate的错误消息:

public function reset(Request $request)
    {
        $this->validate($request, $this->rules(), $this->validationErrorMessages());

        $response = $this->broker()->reset(
                $this->credentials($request), function ($user, $password) {
            $this->resetPassword($user, $password);
        }
        );

        return $response == Password::PASSWORD_RESET
                ? $this->sendResetResponse($response)
                : $this->sendResetFailedResponse($request, $response);
    }
但是,如果验证在会话中失败,则不会出现错误

在:

抛出异常,但我不知道如何在会话中使用它

但是如果我在
受保护函数formatValidationErrors(validator$validator)
中选中
$validator->errors()->getMessages()
,则存在错误消息:

array:1 [▼
  "password" => array:1 [▼
    0 => "The password confirmation does not match."
  ]
]
已编辑

在我的例子中,问题是在
Kernel.php
中多次使用
StartSession
。在
$middleware
中评论
启动会话后,会话中的flash工作正常。我不知道它是如何发生的,何时发生的。
由此:

protected $middleware = [
            \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \App\Http\Middleware\LanguageSwitcher::class,
        ];
为此:

protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        //\Illuminate\Session\Middleware\StartSession::class,
        \App\Http\Middleware\LanguageSwitcher::class,
    ];


请用以下代码替换您的代码:

    $this->validate($request, [
                'token' => 'required',
                'email' => 'required|email|max:35',
                'password' => 'required|confirmed|min:6|max:15',
            ]);

            $credentials = $request->only(
                'email', 'password', 'password_confirmation', 'token'
            );

            $response = Password::reset($credentials, function ($user, $password) {
                $this->resetPassword($user, $password);
            });
 switch ($response) {
            case Password::PASSWORD_RESET:
                return redirect($this->redirectPath())->with('status', trans($response));

            default:
                return redirect()->back()
                            ->withInput($request->only('email'))
                            ->withErrors(['email' => trans($response)]);
        }

将此代码用于catch validate error

$this->validate($Request, [
    'Email' => 'required|unique:users',
    'Username' => 'required',
    'Password' => 'required',
    ]);

请同时提及错误。您为在blade.php文件中显示消息编写了什么?这没有捕获任何内容,您需要在回答中将
$Request
更改为
$Request
,但它仍然在页面旁边滑动,然后直接返回到
密码/reset
登录页。通过将
电子邮件更改为
“Email”=>“required”
,并对用户名和密码条目进行注释,我能够让它进行验证,这至少帮助我确定导致失败的原因。。所以,
dd($this->rules())也显示令牌,而不是用户名,所以我认为它一定是令牌。这至少给了我一些东西。编辑,好的,我能够诊断出它是令牌,结果是这个
“_-token”=>“MzVpGGIhNiVBaRWixxxf4Z0FC7KxxXPVhixAKBmL”“token”=>null
,由于某种原因,令牌是隐藏的。
    $this->validate($request, [
                'token' => 'required',
                'email' => 'required|email|max:35',
                'password' => 'required|confirmed|min:6|max:15',
            ]);

            $credentials = $request->only(
                'email', 'password', 'password_confirmation', 'token'
            );

            $response = Password::reset($credentials, function ($user, $password) {
                $this->resetPassword($user, $password);
            });
 switch ($response) {
            case Password::PASSWORD_RESET:
                return redirect($this->redirectPath())->with('status', trans($response));

            default:
                return redirect()->back()
                            ->withInput($request->only('email'))
                            ->withErrors(['email' => trans($response)]);
        }
$this->validate($Request, [
    'Email' => 'required|unique:users',
    'Username' => 'required',
    'Password' => 'required',
    ]);