sourcetoad/rule-helper-for-laravel

Laravel 规则助手

v5.3.0 2024-09-12 12:33 UTC

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 时标记为必填。