arifszn / laravel-advanced-validation
适用于现实场景的 Laravel 高级验证规则。
Requires
- php: ^7.2|^8.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0
Requires (Dev)
- orchestra/testbench: ^6.23
- phpunit/phpunit: ^9.5
README
适用于现实场景的 Laravel 高级验证规则。
安装
通过 composer 安装
composer require arifszn/laravel-advanced-validation
Laravel 使用包自动发现,因此不需要您手动添加 ServiceProvider。
翻译
如果您想编辑包的翻译,可以运行以下命令将它们发布到您的 resources/lang 文件夹
php artisan vendor:publish --provider="Arifszn\AdvancedValidation\ServiceProvider"
自定义错误消息
在声明规则时,您可以动态指定错误消息。简单传递错误消息参数。
use Arifszn\AdvancedValidation\Rules\Username; public function rules() { return [ 'foo' => [new Username('Your custom error message')], ]; }
可用的验证规则
AsciiBase64 ImageBase64 StringBICBtc AddressCredit CardData URIDivisible ByEthereum AddressFloat NumberHashImage URLJWTNamePhoneUsernameWithout Spaces
Ascii
正在验证的字段必须只包含 ASCII 字符。
public Arifszn\AdvancedValidation\Rules\Ascii::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Ascii; public function rules() { return [ 'foo' => [new Ascii()], ]; }
Base64Image
正在验证的字段必须是一个 Base64 编码的图像。
public Arifszn\AdvancedValidation\Rules\Base64Image::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Base64Image; public function rules() { return [ 'avatar' => [new Base64Image()], ]; }
Base64String
正在验证的字段必须是一个 Base64 编码的字符串。
public Arifszn\AdvancedValidation\Rules\Base64String::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Base64String; public function rules() { return [ 'foo' => [new Base64String()], ]; }
BIC
正在验证的字段必须是一个 BIC(或 SWIFT)代码。
public Arifszn\AdvancedValidation\Rules\BIC::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\BIC; public function rules() { return [ 'foo' => [new BIC()], ]; }
BtcAddress
正在验证的字段必须是一个有效的 BTC 地址。
public Arifszn\AdvancedValidation\Rules\BtcAddress::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\BtcAddress; public function rules() { return [ 'foo' => [new BtcAddress()], ]; }
CreditCard
正在验证的字段必须是一个有效的信用卡号。
public Arifszn\AdvancedValidation\Rules\CreditCard::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\CreditCard; public function rules() { return [ 'foo' => [new CreditCard()], ]; }
DataURI
正在验证的字段必须具有 data uri 格式。
public Arifszn\AdvancedValidation\Rules\DataURI::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\DataURI; public function rules() { return [ 'foo' => [new DataURI()], ]; }
DivisibleBy
正在验证的字段必须可以被给定数字整除。
public Arifszn\AdvancedValidation\Rules\DivisibleBy::__construct(int $number, string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\DivisibleBy; public function rules() { return [ 'foo' => [new DivisibleBy(2)], ]; }
EthereumAddress
正在验证的字段必须是一个 Ethereum 地址。不验证地址校验和。
public Arifszn\AdvancedValidation\Rules\EthereumAddress::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\EthereumAddress; public function rules() { return [ 'foo' => [new EthereumAddress()], ]; }
FloatNumber
正在验证的字段必须是一个浮点数。
public Arifszn\AdvancedValidation\Rules\FloatNumber::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\FloatNumber; public function rules() { return [ 'foo' => [new FloatNumber()], ]; }
Hash
正在验证的字段必须是一个算法哈希。
算法可以是以下之一:'md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', 'tiger160', 'tiger192', 'crc32', 'crc32b'。
public Arifszn\AdvancedValidation\Rules\Hash::__construct(string $algorithm, string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Hash; public function rules() { return [ 'foo' => [new Hash('md4')], ]; }
ImageURL
正在验证的字段必须是一个有效的图像 URL。
✓ https://php.ac.cn/images/logos/php-logo.png
✕ https://imaginarysite123.com/invalid.png
public Arifszn\AdvancedValidation\Rules\ImageURL::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\ImageURL; public function rules() { return [ 'avatar' => [new ImageURL()], ]; }
JWT
正在验证的字段必须具有有效的 JWT (JSON Web Token) 格式。
public Arifszn\AdvancedValidation\Rules\Jwt::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Jwt; public function rules() { return [ 'foo' => [new Jwt()], ]; }
Name
正在验证的字段必须是一个有效的名称。
- 没有表情符号
- 没有数字(如果
$allowNumber标志为 true,则接受数字,默认为 false) - 允许特殊字符(限制特殊字符将导致像
Martin Luther King, Jr.或李小龍这样的名称出现假阴性)
public Arifszn\AdvancedValidation\Rules\Name::__construct(bool $allowNumber = false, string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Name; public function rules() { return [ 'name' => [new Name()], ]; }
Phone
正在验证的字段必须是一个有效的电话号码。
✓ +x-xxx-xxx-xxxx
✓ +xxxxxxxxxxx
✓ (xxx) xxx-xxxx
✓ xxxxxxxxxx
public Arifszn\AdvancedValidation\Rules\Phone::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Phone; public function rules() { return [ 'foo' => [new Phone()], ]; }
Username
正在验证的字段必须是一个有效的用户名。
- 以字母(alpha)开头
- 仅字母数字(a-z,A-Z,0-9),下划线,减号和点
- 不允许多个下划线,减号和点 (-- 或 __ 或 ..)
- 下划线,减号和点不允许在开头或结尾
public Arifszn\AdvancedValidation\Rules\Username::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Username; public function rules() { return [ 'username' => [new Username()], ]; }
WithoutSpaces
正在验证的字段不得包含空格。
public Arifszn\AdvancedValidation\Rules\WithoutSpaces::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\WithoutSpaces; public function rules() { return [ 'foo' => [new WithoutSpaces()], ]; }
提示
如果您想将规则作为字符串使用并全局应用,例如 'foo' => ['phone'],可以通过将它们添加到您项目中的 AppServiceProvider 的 boot 方法来实现。
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Validator; use Arifszn\AdvancedValidation\Rules\Phone; class AppServiceProvider extends ServiceProvider { public function boot() { Validator::extend( 'phone', 'Arifszn\AdvancedValidation\Rules\Phone@passes', (new Phone())->message() ); } }
测试
composer test
贡献
任何希望使这个项目变得更好的贡献者都可以做出贡献,这将被非常感激。要贡献,请本地克隆此仓库并将您的代码提交到一个新的分支。请随时创建问题或发起拉取请求。
致谢
支持
许可证
本软件包遵循 MIT 许可证。