0

我已经在我的laravel 5.6类似这样的东西中创建了一个自定义表单请求:

<?php

namespace Noetic\Plugins\blog\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StorePostRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [

        ];
    }
}

当我没有在规则中放置任何东西时,我让控制器工作,当我在里面放置任何规则时,假设我放了

return [
    'title' =>  'required',
    'body'  =>  'required',
];

它一直有效,直到它被验证为真,我的意思是如果标题和正文通过了它就会得到验证,但是当我不发送标题或正文的任何​​数据时,我没有收到错误作为响应,我看到主页属于 web中间件,我想返回错误数据作为响应。

我的控制器是这样的:

public function store( StorePostRequest $request )
{
    if ($request->fails()) {
        return $this->errorResponse($request->errors()->all());
    }

    $data = $request->only('title', 'body');

    $post = Post::create($data);

    return response()->json(['post'=> $post ],200);
}

帮我解决这些。谢谢

4

2 回答 2

1

在您的控制器功能中,您无需捕获验证,只需尝试成功路径即可。

处理程序将处理您的验证

public function store( StorePostRequest $request )
{
    $data = $request->only('title', 'body');

    $post = Post::create($data);

    return response()->json(['post'=> $post ],200);
}

在你的处理程序中

use Illuminate\Validation\ValidationException;

if ($exception instanceof ValidationException)
{
    return response($exception->errors())->header('Content-Type', 'application/json');
}
于 2019-05-07T04:37:18.910 回答
0

使用 Illuminate\Contracts\Validation\Validator;

使用 Illuminate\Http\Exceptions\HttpResponseException;

在那之后

protected function failedValidation(Validator $validator) {
    throw new HttpResponseException(response()->json($validator->errors(), 422));
}
于 2018-10-23T05:56:59.367 回答