sourcetoad / rule-helper-for-laravel
Laravel 规则助手
v5.3.0
2024-09-12 12:33 UTC
Requires
- php: ^8.2
- laravel/framework: ^11.23.2
Requires (Dev)
- ext-json: *
- larastan/larastan: ^2.0
- laravel/pint: 1.13.9
- orchestra/testbench: ^9.4
- phpunit/phpunit: ^10.5
README
通过提供内置规则的辅助方法,为构建 Laravel 规则数组提供辅助函数,使构建过程更简单。
安装
composer require sourcetoad/rule-helper-for-laravel
使用方法
RuleSet
RuleSet
类提供了一种流畅的接口,用于定义一组规则。
基本使用
use App\Rules\CustomRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rules\Unique; use Sourcetoad\RuleHelper\RuleSet; class CreateBlogRequest extends FormRequest { public function rules(): array { return [ 'title' => RuleSet::create() ->required() ->unique('posts', 'title', fn(Unique $rule) => $rule->withoutTrashed()) ->rule(new CustomRule) ->max(255), 'body' => RuleSet::create() ->required(), ]; } }
Rule
Rule
类提供了与 Laravel \Illuminate\Validation\Rule
类相同的方法,并通过静态方法暴露了所有内置规则。
基本使用
use Illuminate\Foundation\Http\FormRequest; use Sourcetoad\RuleHelper\Rule; class CreateBlogRequest extends FormRequest { public function rules(): array { return [ 'title' => [ Rule::required(), Rule::unique('posts'), Rule::max(255), ], 'body' => [ Rule::required(), ], ]; } }
其他辅助函数
定义的规则集
RuleSet
类包含定义和跨项目重用规则集的方法。
要在应用程序服务提供者的 boot 方法中定义一个规则集,请调用 RuleSet::define
。
public function boot(): void { RuleSet::define('existing_email', RuleSet::create()->email()->exists('users')); }
定义的集合可以通过 RuleSet::useDefined
在规则中使用。
public function rules(): array { return [ 'to' => RuleSet::useDefined('existing_email')->required(), 'bcc' => RuleSet::useDefined('existing_email'), ]; }
要连接一个定义的规则集,可以调用 concatDefined 并传入规则集的名称。
RuleSet::create()->required()->concatDefined('existing_email');
requiredIfAll
接受多个 RequiredIf
规则,并且只有当所有返回值都为 true 时才标记为必填。
requiredIfAny
接受多个 RequiredIf
规则,并且当任何返回值为 true 时标记为必填。