【问题标题】:How to add a custom validation method in Laravel如何在 Laravel 中添加自定义验证方法
【发布时间】:2021-10-13 00:44:01
【问题描述】:

正如我们所知,在 Laravel 中,我们可以通过 $request->validate() 方法验证请求,如果验证失败,该方法会自动重定向用户。 我正在尝试开发一个具有类似功能的函数,唯一的区别是,该函数不会重定向用户,而是在验证失败时发送 JSON 响应。

这是我的代码

<?php 

namespace App\Libs;

use Illuminate\Http\Request as RequestCore;
use Illuminate\Support\Facades\Validator;

class Request extends RequestCore {

    public function validateAjax($data){
        $input = $this->all();
        $validator = Validator::make($input,$data);

        if ($validator->fails()) {
           return response()->json([
               "errors" => $validator->errors(),
               "message" => "Invalid Input"
           ], 401); 
        }
       
        return true;
    }
}

问题是,当我运行代码时,它不会因错误而停止。我错过了什么?

【问题讨论】:

  • 这是开箱即用的验证方式。你用什么来发送你的ajax请求?另外,请显示验证规则并说明哪些应该失败。

标签: php laravel validation laravel-8


【解决方案1】:

您应该创建新的请求类(php artisan make:request ExampleRequest)。并在该类中添加此函数以进行 JSON 响应后

    protected function failedValidation(Validator $validator)
    {
        $errors = (new ValidationException($validator))->errors();

        throw new HttpResponseException(
            response()->json(['status' => 'error', 'errors' => $errors], JsonResponse::HTTP_UNPROCESSABLE_ENTITY)
        );
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 2021-04-07
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    相关资源
    最近更新 更多