Laravel自定义通用性表单验证类和报文

文章介绍了如何在Laravel框架中创建自定义验证类和具体的验证器类,以提高代码的可重用性和可维护性。通过FormValidator基类和CustomFormValidator实例,开发者可以定义验证规则和错误消息,然后在控制器中调用这些验证器来处理表单数据,当验证失败时会抛出异常并返回友好的错误信息。
摘要由CSDN通过智能技术生成

1、创建自定义验证类:

首先,在app/Validators目录下创建一个新的文件夹,用于存放自定义的验证类。在该目录下创建一个名为FormValidator.php的文件,返回验证的字段,再根据返回的字段走业务流程,这样可避免部分字段遗落验证,或者接收到恶意字段。

<?php

namespace App\Validators;

use Illuminate\Support\Facades\Validator;

class FormValidator
{
    public static function validate(array $data, array $rules, array $messages = [])
    {
        $validator = Validator::make($data, $rules, $messages);

        if ($validator->fails()) {
            throw new \InvalidArgumentException($validator->errors()->first());
        }

        return $data;
    }
}

在上面的示例中,我们创建了一个名为FormValidator的验证类。该类包含一个静态方法validate,接受要验证的数据、验证规则和可选的验证错误消息。该方法使用Laravel的Validator类进行验证,并在验证失败时抛出异常。

2、创建具体的验证器类:

接下来,在app/Validators目录下创建一个名为CustomFormValidator.php的具体验证器类,根据不同的rules进行对应参数的验证更加通用。

<?php

namespace App\Validators;

class CustomFormValidator
{
    public static function validate($data = [], $rules = [])
    {
        //自定义规则提示语
        $message = [
            'username.required' => '账号名不能为空',
            'username.min' => '账号太短,至少要有:3个字符',
            'username.max' => '账号太长,最多不超过:50个字符',
            'password.required' => '密码不能为空',
            'phone.required' => '手机号码不能为空',
        ];


        return FormValidator::validate($data, $rules, $message);
    }
}

在上面的示例中,我们创建了一个名为CustomFormValidator的具体验证器类。该类定义了具体的验证规则,并使用我们之前创建的FormValidator类来进行验证。

3、使用自定义验证器类:

现在,你可以在控制器或其他需要进行表单验证的地方使用自定义验证器类,根据自定义的rules去验证对应的参数字段

public function login(Request $request)
    {
        $data = $request->post();
        $rules = [
            'username' => 'required',
            'password' => 'required',
        ];

        try {
            $data = CustomFormValidator::validate($data, $rules);
            // 验证通过,继续处理请求
        } catch (\InvalidArgumentException $e) {
            // 验证失败,处理错误
            return $this->msgJson(400, $e->getMessage());
        }



    }

在上面的示例中,我们在myMethod方法中使用了CustomFormValidator类进行表单验证。如果验证失败,将抛出\InvalidArgumentException异常,我们可以在catch块中处理该异常并返回自定义的错误响应。如果验证通过,你可以继续处理请求。

使用自定义验证类和验证器类,你可以在多个请求中重用验证规则,并自定义验证错误消息。通过自定义错误消息,你可以更好地控制和定制验证错误的输出。这样可以提高代码的可重用性和可维护性,同时提供更友好和准确的错误信息给用户。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值