f9webltd/laravel-validation-rules

一组实用的 Laravel 验证规则

1.1.1 2020-10-06 15:16 UTC

This package is auto-updated.

Last update: 2024-09-07 00:42:48 UTC


README

Latest Stable Version Scrutinizer coverage (GitHub/BitBucket) Scrutinizer code quality (GitHub/Bitbucket) Build Status StyleCI Status License

有用的 Laravel 验证规则

一组有用的 Laravel 验证规则。

要求

PHP >= 7.2, Laravel >=5.8 | 6.x | 7.x | 8.x

安装

composer require f9webltd/laravel-validation-rules

要发布包验证消息翻译

php artisan vendor:publish --provider="F9Web\ValidationRules\ValidationRulesServiceProvider"

已发布的翻译在 resources/lang/vendor/f9web-validation-rules/messages.php 中可用。

用法

如官方Laravel 文档中所述,在需要时导入所需的规则

use F9Web\ValidationRules\Rules\TitleCase;

// ...

$request->validate([
    'team' => ['required', new TitleCase()],
]);

或者直接使用Laravel 表单请求对象使用规则

可用规则

Base64EncodedString

确保传递的属性是一个有效的基64编码字符串。

Coordinate

确保传递的属性是一个有效的逗号分隔的纬度和经度字符串。例如:51.507877,-0.087732

DomainRestrictedEmail

确保所提供的电子邮件属于提供的域名白名单之一。

例如,要确保给定的电子邮件域是 f9web.co.uklaravel.com

use F9Web\ValidationRules\Rules\DomainRestrictedEmail;

// ...

$request->validate([
    'email' => [
        'required', 
        (new DomainRestrictedEmail())->validDomains([
            'f9web.co.uk',
            'laravel.com',
        ]),
    ],
]);

验证消息将包含基于提供的配置的白名单域名列表。

ExcludesHtml

确保传递的属性不包含HTML。

HexColourCode

确保传递的属性是一个有效的十六进制颜色代码(长度为三到六位字符),可选地验证是否存在 # 前缀。

最小使用示例以验证带前缀的短长度代码,例如 #fff

use F9Web\ValidationRules\Rules\HexColourCode;

(new HexColourCode());

扩展使用示例以验证长长度代码,省略前缀,例如 cc0000

use F9Web\ValidationRules\Rules\HexColourCode;

(new HexColourCode())->withoutPrefix()->longFormat();

Honorific

确保传递的属性是一个有效的敬称,省略附加的点。有效的敬称列表可在此处找到。

IncludesHtml

确保传递的属性包含HTML。

NoWhitespace

确保传递的属性不包含空白。

NumberParity

验证数字奇偶性。

奇数

use F9Web\ValidationRules\Rules\NumberParity;

// ...

$request->validate([
    'amount' => [
        'required', 
        (new NumberParity())->odd(),
    ],
]);

偶数

use F9Web\ValidationRules\Rules\NumberParity;

// ...

$request->validate([
    'amount' => [
        'required', 
        (new NumberParity())->even(),
    ],
]);

StringContains

确保给定的属性包含提供的字符串。

最小使用示例以确保属性包含字符串 phplaravel

use F9Web\ValidationRules\Rules\StringContains;

// ...

$request->validate([
    'description' => [
        'required', 
        (new StringContains())->phrases([
            'laravel',
            'php',
        ]),
    ],
]);

可选地强制字符串包含 所有 提供的短语

use F9Web\ValidationRules\Rules\StringContains;

// ...

$request->validate([
    'description' => [
        'required', 
        (new StringContains())->phrases([
            'laravel',
            'php',
        ])->strictly(),
    ],
]);

验证消息将根据提供的配置包含短语列表。

StrongPassword

确保给定的属性符合提供的条件。

最小使用示例以确保属性

  • 长度至少为八位字符
  • 包含大小写字母
  • 包含至少一个数字
use F9Web\ValidationRules\Rules\StrongPassword;

// ...

$request->validate([
    'password' => [
        'required', 
        (new StrongPassword()),
    ],
]);

还有其他方法可用。

use F9Web\ValidationRules\Rules\StrongPassword;

// ...

$request->validate([
    'password' => [
        'required', 
        (new StrongPassword())
            ->forceUppercaseCharacters()
            ->forceLowercaseCharacters(false)
            ->forceNumbers()
            ->forceSpecialCharacters()
            // ->withSpecialCharacters('£$*%^'),
    ],
]);

默认的特殊字符是 !@#$%^&*()\-_=+{};:,<."£~?|>。可选地可以使用 withSpecialCharacters() 方法定义自定义列表。

TitleCase

确保提供的属性是 标题大小写

UKMobilePhone

确保提供的属性是有效的英国移动电话号码。

Uppercase

确保提供的属性完全是大写。

贡献

欢迎任何想法。请随时提交任何问题或拉取请求。

测试

composer test

安全

如果您发现任何与安全相关的问题,请通过电子邮件rob@f9web.co.uk联系,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。