ukeloop/laravel-validation-rule-builder

v0.1.0 2022-10-26 16:29 UTC

This package is auto-updated.

Last update: 2024-09-19 11:55:33 UTC


README

安装

只需在终端运行 composer require 命令

$ composer require ukeloop/laravel-validation-rule-builder

验证规则构建器

您可以使用方法链模式定义验证规则。

use Illuminate\Support\Facades\Validator;
use Ukeloop\ValidationRuleBuilder\ValidationRuleBuilder;

Validator::make($input, [
    'title' => (new ValidationRuleBuilder())->required()->string()->max(255),
]);

您可以使用 Laravel 验证规则。

use Ukeloop\ValidationRuleBuilder\ValidationRuleBuilder;

$validationRule = new ValidationRuleBuilder();

$validationRule->required();
$validationRule->sometime();
$validationRule->nullable();

$validationRule->string();
$validationRule->integer();
$validationRule->numeric();
$validationRule->date();
$validationRule->bool();

$validationRule->min(8);
$validationRule->max(255);

$validationRule->email('strict', 'dns');

// etc ...

对于其他验证规则,请参阅 Laravel 文档

使用规则对象

$validationRule->add(Password::min(8));

使用闭包

new ValidationRuleBuilder(
    function ($attribute, $value, $fail) {
        if ($value === 'foo') {
            $fail('The ' . $attribute . ' is invalid.');
        }
    }
);

验证规则集

验证规则集是通过组合 Laravel 验证规则创建的。这可以帮助您使项目中的验证规则更加 DRY(Don't Repeat Yourself)。

例如,电子邮件地址的规则

use Ukeloop\ValidationRuleBuilder\RuleSet;

class EmailRuleSet extends RuleSet
{
    public static function rules(): ValidationRuleBuilder
    {
        return new ValidationRuleBuilder('email:strict,dns,spoof');
    }
}
use Illuminate\Support\Facades\Validator;

Validator::make($input, [
    'email' => EmailRuleSet::rules()->somtime()->required(),
]);

例如,密码的规则

use Ukeloop\ValidationRuleBuilder\RuleSet;

class PasswordRuleSet extends RuleSet
{
    public static function rules(): ValidationRuleBuilder
    {
        return new ValidationRuleBuilder(
            Password::min(8)
                ->letters()
                ->mixedCase()
                ->numbers()
                ->symbols()
        );
    }
}
use Illuminate\Support\Facades\Validator;

Validator::make($input, [
    'password' => PasswordRuleSet::rules()->required()->confirmed(),
]);

测试

$ composer test