对Http请求进行Laravel验证

时间:2017-05-25 10:18:00

标签: php laravel-5 postman

我写了这部分Api:

public function store(Request $request)
{
    $this->validate($request, [
            'citizenship' => 'required',
            'country' => 'required'
    ]);
...

我正在向邮递员发送邮件请求,但没有通过其中一个必填字段,我没有看到任何错误响应,但它只是将我重定向到应用程序的主页。如何获取错误消息?

2 个答案:

答案 0 :(得分:0)

试试这个

try{
    $result = YourModel::validate($attributes);
}catch (\Exception $e){
    throw $e;
}

答案 1 :(得分:0)

Laravel非常聪明。如果您将字段Accept设置为邮递员application/json。您会注意到,您将收到422 HTTP状态代码的响应以及所有验证错误。另外(来自"Validation" section of the Laravel Documentation

  

在AJAX请求期间使用validate方法时,Laravel不会生成重定向响应。相反,Laravel会生成包含所有验证错误的JSON响应。此JSON响应将使用422 HTTP状态代码发送。

看一下负责发回响应的方法,你就会明白为什么:)

public function response(array $errors)
{
    if ($this->expectsJson()) {
        return new JsonResponse($errors, 422);
    }

    return $this->redirector->to($this->getRedirectUrl())
        ->withInput($this->except($this->dontFlash))
        ->withErrors($errors, $this->errorBag);
}