arifszn/laravel-advanced-validation

适用于现实场景的 Laravel 高级验证规则。

v1.1.1 2022-03-03 14:22 UTC

This package is auto-updated.

Last update: 2024-09-11 17:31:42 UTC


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')],
    ];
}

可用的验证规则

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

贡献

任何希望使这个项目变得更好的贡献者都可以做出贡献,这将被非常感激。要贡献,请本地克隆此仓库并将您的代码提交到一个新的分支。请随时创建问题或发起拉取请求。

致谢

支持

Buy Me A Coffee

许可证

本软件包遵循 MIT 许可证