代码之家  ›  专栏  ›  技术社区  ›  Norgul

Laravel 5.5。验证请求重定向/响应

  •  2
  • Norgul  · 技术社区  · 8 年前

    我可以重写验证请求中的某些属性来控制验证失败时的情况吗?(我不想在控制器中使用验证)

    我有用户验证请求:

    public function rules()
    {
        return [
            'email'                 => 'required|email|max:255|unique:user',
            'name'                  => 'required',
            'password'              => 'required|min:6',
            'password_confirmation' => 'required|min:6|same:password'
        ];
    }
    

    当AJAX调用register方法时,会发生以下情况:

    public function postRegisterAjax(UserRegistrationValidationRequest $request)
    {
        ...
        return $this->responseJson($status, $msg);
    }
    

    我需要更新 $msg 以某种方式,我可以通过JS动态返回验证错误消息。

    (在我的自定义表单请求中)

    public function failedValidation(Validator $validator)
    {
        if ($validator->fails()) {
            $status = Status::ERROR;
            throw new HttpResponseException(response()->json(["response" => [
                'msg'    => $validator->errors()->all(':message'),
                'status' => $status
            ]]));
        }
    
        return response()->json(["response" => [
            'msg'    => 'User successfully registered',
            'status' => Status::SUCCESS
        ]]);
    }
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   iamab.in    7 年前

    返回验证错误消息 :

    在里面 Laravel表单请求验证 ,如果验证失败,在AJAX请求的情况下,将返回JSON响应。JSON响应包含所有验证错误。您可以在 ajax 错误响应。 (转储错误响应,您可以在 responseJSON ).

    如果您想添加其他逻辑/验证并将错误附加到 error bag ,您可以使用 after-validation-hook .

    希望它能帮助你。。

    更新

    您可以覆盖 laravel form request 的响应方法,如下所示,

    public function response(array $errors)
        {
            return response()->json(['status' => $status, "response" => $errors]);
        }
    

    在您的回复中,您可以通过以下方式访问错误: data.response

        2
  •  0
  •   arun    8 年前

    更新日期:

    public function postRegisterAjax(UserRegistrationValidationRequest $request)
    {
            $validator = Validator::make($data, $rules);
            if ($validator->fails()) {
                $msg = $validator->errors();
                return $this->responseJson($status, $msg);
            }
    }