ukeloop / laravel-validation-rule-builder
Laravel 验证规则构建器
v0.1.0
2022-10-26 16:29 UTC
Requires
- php: >=8.0
- illuminate/support: ^9.0
- illuminate/validation: ^9.0
Requires (Dev)
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^7.0
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^9.5
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