【发布时间】:2017-03-15 20:17:50
【问题描述】:
我尝试从.../app/Http/Controllers/Auth/ResetPasswordController.php 中的验证中捕获错误消息:
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);
}
但如果验证在会话中失败,则没有错误。
在:
public function validate(Request $request, array $rules, array $messages = [], array $customAttributes = [])
{
$validator = $this->getValidationFactory()->make($request->all(), $rules, $messages, $customAttributes);
if ($validator->fails()) {
$this->throwValidationException($request, $validator);
}
}
抛出异常,但我不知道如何在会话中使用它。
但如果我在protected function formatValidationErrors(Validator $validator) 中检查$validator->errors()->getMessages() 错误消息存在:
array:1 [▼
"password" => array:1 [▼
0 => "The password confirmation does not match."
]
]
已编辑
在我的情况下,问题是在Kernel.php 中多次使用StartSession。在$middleware 中评论StartSession 后,会话中的闪存效果很好。我不知道它是如何以及何时发生的。
从此:
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,
];
和
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
(...)
【问题讨论】:
-
请同时指出错误。
-
你为在blade.php文件中显示消息而写了什么?
标签: php laravel blade laravel-5.4