Laravel5.8 表单验证 不返回 422

直接上代码 :

public function store(Request $request)
{
    $data = $request->validate([
        'name'     => 'required|min:2|max:10',
        'phone'    => 'required',
        'province' => 'required',
        'city'     => 'required',
        'area'     => 'required',
        'detail'   => 'required|max:50',
    ]);

    $data['user_id'] = $this->user->id;
    UserAddress::create($data);

    return response()->json(['success' => true]);
}

如上代码当前端请求的时候 不满足验证规则的时候 直接跳转到 首页了 就是 laravel 字样那个页面

无奈只能修改成如下代码:

public function store(Request $request)
{
    $result = Validator::make($request->all(), [
        'name'     => 'required|min:2',
        'phone'    => 'required',
        'province' => 'required',
        'city'     => 'required',
        'area'     => 'required',
        'detail'   => 'required|max:50',
    ]);

    if ($result->fails()) {
        return response()->json($result->errors(), 422);
    }

    $data = $request->toArray();
    $data['user_id'] = $this->user->id;
    UserAddress::create($data);

    return response()->json(['success' => true]);
}

查看文档 感觉也没问题

AJAX 请求 & 验证
在这个例子中,我们使用传统的表单将数据发送到应用程序。但实际情况中,很多程序都会使用 AJAX 来发送请求。当我们对 AJAX 的请求中使用 validate 方法时,Laravel 并不会生成一个重定向响应,而是会生成一个包含所有验证错误信息的 JSON 响应。这个 JSON 响应会包含一个 HTTP 状态码 422 被发送出去。

没搞明白为什么 ?

勤能补拙
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

你前端要用 ajax 请求,响应(包括错误)才会自动转成 json

4年前 评论
largezhou (作者) 4年前
feivorid (楼主) 4年前
largezhou (作者) 4年前
feivorid (楼主) 4年前
feivorid (楼主) 4年前

file

4年前 评论
feivorid (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!