自定义异常渲染将忽略验证消息

时间:2019-04-10 08:42:35

标签: laravel validation exception

在添加了用于异常处理的自定义视图后,不再返回我的验证消息,仅-“给定数据无法通过验证。”

我在handler.php中添加了以下内容,并删除了原始的parent :: render($ request,$ exception);

public function render($request, Exception $exception){

    return response()->view('error', compact('exception'), 500);

}

有一种方法可以保留我的验证消息,并在错误验证未失败时显示错误视图,因为我讨厌看到默认的“发生错误”视图。

2 个答案:

答案 0 :(得分:1)

如果您进一步查看parent::render()的代码,则会看到一行:

return $this->convertValidationExceptionToResponse($e, $request);

这会将功能应用于请求,例如withInput()withErrors()

因此,您可以尝试与此类似的一些代码:

public function render(...) {
  return response()->view('error', ...)
 ->withInput(Arr::except($request->input(), $this->dontFlash))
 ->withErrors($exception->errors(), $exception->errorBag);
}

答案 1 :(得分:0)

我使它能够按预期工作,以保留由我必须添加到我的App / Exceptions / Handler.php中的FormRequest创建的自定义验证消息:

use Illuminate\Validation\ValidationException;

public function render($request, Exception $exception)
{
    if($exception instanceof ValidationException) {
        return parent::render($request, $exception);
    }
    else{
        return response()->view('error', compact('exception'), 500);
    }
}