在从L5.1更新到L5.2之后,我不再接收JSON对象作为对失败的FormRequest的响应(即在AJAX发布请求上).
通常我会收到422回复,如:
[ email: 'E-mail is invalid', firstname: 'Firstname must be at least 2 characters' ]
但现在我收到500错误页面:
我已确保我的AJAX调用都application/json
作为Accept
标题.
不,我不是手动捕获此异常.我正在使用Laravel提供的默认FormRequest.正如他们在文档中所述:在AJAX请求期间使用validate方法时,Laravel不会生成重定向响应.相反,Laravel会生成包含所有验证错误的JSON响应.此JSON响应将与422 HTTP状态代码一起发送.
像这样:php artisan make:request StoreBlogPostRequest
(https://laravel.com/docs/5.1/validation#form-request-validation)
@Mattias!
我最近遇到了同样的问题,我浪费了两个多小时试图了解导致此问题的真正原因。在.env文件中禁用调试会导致表单验证显示500,因为FormValidator抛出ValidationException(并且未处理)。该问题的解决方案是:打开app \ Exceptions \ Handler.php
private function handleExceptions($e) { // Add anywhere in this method the following code // It does what the FormValidator does. if($e instanceof ValidationException) { return redirect()->back()->withErrors($e->validator->getMessageBag()->toArray()); } return response()->view('errors.500', [], 500); }