laravel - 使用laravel表单请求验证失败时如何返回自定义响应
问题描述
当我们在控制器中使用Laravel 表单请求并且验证失败时,表单请求将使用errors
变量重定向回来。
redirection
当数据无效时,如何禁用并返回自定义错误响应?
我将使用表单请求来GET|POST|PUT
请求类型。
我尝试Validator
上课来解决我的问题,但我必须使用表单请求。
$validator = \Validator::make($request->all(), [
'type' => "required|in:" . implode(',', $postTypes)
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()]);
}
解决方案
创建自定义FormRequest
类是要走的路。
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Validation\ValidationException;
use Illuminate\Http\Exceptions\HttpResponseException;
class FormRequest extends \Illuminate\Foundation\Http\FormRequest
{
protected function failedValidation(Validator $validator)
{
if ($this->expectsJson()) {
$errors = (new ValidationException($validator))->errors();
throw new HttpResponseException(
response()->json(['data' => $errors], 422)
);
}
parent::failedValidation($validator);
}
}
类位于app/Http/Requests
目录中。在 Laravel 6.x 中测试和工作。
推荐阅读
- android - RecyclerView 中的基本 ArrayList 没有给出预期的输出
- c# - 嵌套 JSON API 数据的反序列化和导出到 CSV
- maven - Maven - 获取最新上传的工件
- javascript - 如何将数据从表单发送到电子邮件
- google-apps-script - 在非活动工作表上重新加载
- excel - IF 语句问题不适用于选择
- python-3.x - 为什么 systemd 不在会话总线上发送单元属性更改通知?
- google-apps-script - Google 脚本 -- 添加用户时未找到域
- linux - Docker:本地 MySQL 卷的权限被拒绝
- jwt - 如何衡量 JWT 的大小?