【问题标题】:Laravel show errors if request form validation fails如果请求表单验证失败,Laravel 会显示错误
【发布时间】:2016-10-21 07:31:35
【问题描述】:

我正在制作一个 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 : [];
    }
}

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

控制器功能

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);
    }

}

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

【问题讨论】:

  • 做 print_r($request->all());die;它返回什么?
  • @HimanshuRaval,尝试在 store 函数的第一条语句中运行该行代码,被重定向到未实现的路由。

标签: php rest validation laravel request


【解决方案1】:

您可以使用文档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 
    }

【讨论】:

    【解决方案2】:

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

    Accept: application/json
    

    成功了。

    【讨论】:

      猜你喜欢
      • 2017-11-07
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 2021-04-10
      • 2018-04-19
      • 1970-01-01
      • 2020-01-17
      • 2015-08-12
      相关资源
      最近更新 更多