f9webltd / laravel-validation-rules
一组实用的 Laravel 验证规则
Requires
- php: ^7.2
- ext-mbstring: *
- illuminate/contracts: 5.8.* || ^6.0 || ^7.0 || ^8.0
- illuminate/support: 5.8.* || ^6.0 || ^7.0 || ^8.0
Requires (Dev)
- orchestra/testbench: >=3.8
- phpunit/phpunit: ^7.0|^8.0
This package is auto-updated.
Last update: 2024-09-07 00:42:48 UTC
README
有用的 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
Coordinate
DomainRestrictedEmail
ExcludesHtml
HexColourCode
Honorific
IncludesHtml
NoWhitespace
NumberParity
StringContains
StrongPassword
TitleCase
UKMobilePhone
Uppercase
Base64EncodedString
确保传递的属性是一个有效的基64编码字符串。
Coordinate
确保传递的属性是一个有效的逗号分隔的纬度和经度字符串。例如:51.507877,-0.087732
。
DomainRestrictedEmail
确保所提供的电子邮件属于提供的域名白名单之一。
例如,要确保给定的电子邮件域是 f9web.co.uk
或 laravel.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
确保给定的属性包含提供的字符串。
最小使用示例以确保属性包含字符串 php
或 laravel
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)。请参阅许可证文件获取更多信息。