如果请求表单验证失败,Laravel会显示错误

时间:2016-06-20 06:27:49

标签: php rest validation laravel request

我正在制作一个应该验证来自用户的数据输入的REST API,为此,我创建了一个具有Request功能的rules类,它应该进行验证。

请求类

class StoreUpdateQuestionRequest extends Request {

    public function authorize() {
        return true;
    }

    public function rules() {
        $method = $this->method();
        $rules = [
            'question' => 'required|min:10|max:140',
            'active' => 'boolean',
        ];

        return $method !== 'GET' || $method !== 'DELETE' ? $rules : [];
    }
}

因此,在控制器中,当我尝试运行一个触发验证的端点时,它确实有效,但它必须失败,但它没有像我预期的那样向我显示错误,即使我定义了messages类中包含的Request函数中的错误消息,而不是向我显示错误,它将我重定向到某个位置。有时这是我之前提出的请求或运行/路由的结果,很奇怪。

控制器功能

public function store(StoreUpdateQuestionRequest $request) {

    $question = new Question;
    $question->question = $request->question;
    $question->active = $request->active;

    if($question->save()) {

        $result = [
            'message' => 'A question has been added!',
            'question' => $question,
        ];

        return response()->json($result, 201);
    }

}

有什么想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

为了完成这项工作,您必须为请求添加额外的标头:

Accept: application/json

这就是诀窍。

答案 1 :(得分:0)

您可以使用文档https://laravel.com/docs/5.2/validation#manually-creating-validators

中所述的基于控制器的验证
    public function store(Request $request) {
        $validator = Validator::make($request->all(), [
            'question' => 'required|min:10|max:140',
            'active' => 'boolean',
        ]);

        if ($validator->fails()) {
            return response()->json($validator->errors());
        }


        //other 
    }