https://github.com/arifszn/laravel-advanced-validation
Laravel advanced validation rules for real-life scenarios.
https://github.com/arifszn/laravel-advanced-validation
laravel laravel-advanced-validation laravel-framework laravel-package laravel-rule laravel-ruleset laravel-validation laravel-validation-library laravel-validation-message laravel-validation-rules laravel-validator validation validation-library validation-rules validation-tool validator
Last synced: 8 months ago
JSON representation
Laravel advanced validation rules for real-life scenarios.
- Host: GitHub
- URL: https://github.com/arifszn/laravel-advanced-validation
- Owner: arifszn
- License: mit
- Created: 2021-11-26T15:39:31.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-03-11T11:15:01.000Z (almost 4 years ago)
- Last Synced: 2025-03-27T22:23:19.853Z (9 months ago)
- Topics: laravel, laravel-advanced-validation, laravel-framework, laravel-package, laravel-rule, laravel-ruleset, laravel-validation, laravel-validation-library, laravel-validation-message, laravel-validation-rules, laravel-validator, validation, validation-library, validation-rules, validation-tool, validator
- Language: PHP
- Homepage: https://packagist.org/packages/arifszn/laravel-advanced-validation
- Size: 119 KB
- Stars: 14
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Laravel Advanced Validation
Laravel advanced validation rules for real-life scenarios.
## Installation
Install via composer
```bash
composer require arifszn/laravel-advanced-validation
```
Laravel uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.
## Translations
If you wish to edit the package translations, you can run the following command to publish them into your `resources/lang` folder
```bash
php artisan vendor:publish --provider="Arifszn\AdvancedValidation\ServiceProvider"
```
## Custom Error Message
You can specify the error message on the fly when declaring the rules. Simple pass the error message parameter.
```php
use Arifszn\AdvancedValidation\Rules\Username;
public function rules()
{
return [
'foo' => [new Username('Your custom error message')],
];
}
```
## Available Validation Rules
- [`Ascii`](#ascii)
- [`Base64 Image`](#base64image)
- [`Base64 String`](#base64string)
- [`BIC`](#bic)
- [`Btc Address`](#btcaddress)
- [`Credit Card`](#creditcard)
- [`Data URI`](#datauri)
- [`Divisible By`](#divisibleby)
- [`Ethereum Address`](#ethereumaddress)
- [`Float Number`](#floatnumber)
- [`Hash`](#hash)
- [`Image URL`](#imageurl)
- [`JWT`](#jwt)
- [`Name`](#name)
- [`Phone`](#phone)
- [`Username`](#username)
- [`Without Spaces`](#withoutspaces)
### `Ascii`
The field under validation must contain ASCII chars only.
```
public Arifszn\AdvancedValidation\Rules\Ascii::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\Ascii;
public function rules()
{
return [
'foo' => [new Ascii()],
];
}
```
### `Base64Image`
The field under validation must be a Base64 encoded image.
```
public Arifszn\AdvancedValidation\Rules\Base64Image::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\Base64Image;
public function rules()
{
return [
'avatar' => [new Base64Image()],
];
}
```
### `Base64String`
The field under validation must be a Base64 encoded string.
```
public Arifszn\AdvancedValidation\Rules\Base64String::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\Base64String;
public function rules()
{
return [
'foo' => [new Base64String()],
];
}
```
### `BIC`
The field under validation must be a BIC([Business Identifier Code](https://en.wikipedia.org/wiki/ISO_9362)) or SWIFT code.
```
public Arifszn\AdvancedValidation\Rules\BIC::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\BIC;
public function rules()
{
return [
'foo' => [new BIC()],
];
}
```
### `BtcAddress`
The field under validation must be a valid BTC address.
```
public Arifszn\AdvancedValidation\Rules\BtcAddress::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\BtcAddress;
public function rules()
{
return [
'foo' => [new BtcAddress()],
];
}
```
### `CreditCard`
The field under validation must be a valid credit card number.
```
public Arifszn\AdvancedValidation\Rules\CreditCard::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\CreditCard;
public function rules()
{
return [
'foo' => [new CreditCard()],
];
}
```
### `DataURI`
The field under validation must have [data uri format](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs).
```
public Arifszn\AdvancedValidation\Rules\DataURI::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\DataURI;
public function rules()
{
return [
'foo' => [new DataURI()],
];
}
```
### `DivisibleBy`
The field under validation must be divisible by the given number.
```
public Arifszn\AdvancedValidation\Rules\DivisibleBy::__construct(int $number, string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\DivisibleBy;
public function rules()
{
return [
'foo' => [new DivisibleBy(2)],
];
}
```
### `EthereumAddress`
The field under validation must be an [Ethereum](https://ethereum.org/en/) address. Does not validate address checksums.
```
public Arifszn\AdvancedValidation\Rules\EthereumAddress::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\EthereumAddress;
public function rules()
{
return [
'foo' => [new EthereumAddress()],
];
}
```
### `FloatNumber`
The field under validation must be a float number.
```
public Arifszn\AdvancedValidation\Rules\FloatNumber::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\FloatNumber;
public function rules()
{
return [
'foo' => [new FloatNumber()],
];
}
```
### `Hash`
The field under validation must be a hash of type algorithm.
Algorithm is one of `'md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', 'tiger160', 'tiger192', 'crc32', 'crc32b'`.
```
public Arifszn\AdvancedValidation\Rules\Hash::__construct(string $algorithm, string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\Hash;
public function rules()
{
return [
'foo' => [new Hash('md4')],
];
}
```
### `ImageURL`
The field under validation must be a valid image URL.
✓ https://www.php.net/images/logos/php-logo.png \
✕ https://imaginarysite123.com/invalid.png
```
public Arifszn\AdvancedValidation\Rules\ImageURL::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\ImageURL;
public function rules()
{
return [
'avatar' => [new ImageURL()],
];
}
```
### `JWT`
The field under validation must have a valid format of JWT ([JSON Web Token](https://en.wikipedia.org/wiki/JSON_Web_Token)).
```
public Arifszn\AdvancedValidation\Rules\Jwt::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\Jwt;
public function rules()
{
return [
'foo' => [new Jwt()],
];
}
```
### `Name`
The field under validation must be a valid name.
- no emoji
- no number (if `$allowNumber` flag is true, it will accept numbers, default is false)
- special characters are allowed (restricting special characters will cause false-negative for names like `Martin Luther King, Jr.` or `李小龍`)
```
public Arifszn\AdvancedValidation\Rules\Name::__construct(bool $allowNumber = false, string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\Name;
public function rules()
{
return [
'name' => [new Name()],
];
}
```
### `Phone`
The field under validation must be a valid phone number.
✓ +x-xxx-xxx-xxxx \
✓ +xxxxxxxxxxx \
✓ (xxx) xxx-xxxx \
✓ xxxxxxxxxx
```
public Arifszn\AdvancedValidation\Rules\Phone::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\Phone;
public function rules()
{
return [
'foo' => [new Phone()],
];
}
```
### `Username`
The field under validation must be a valid username.
- starts with a letter (alpha)
- only alpha-numeric (a-z, A-Z, 0-9), underscore, minus and dot
- multiple underscores, minus and are not allowed (-- or __ or ..)
- underscores, minus and dot are not allowed at the beginning or end
```
public Arifszn\AdvancedValidation\Rules\Username::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\Username;
public function rules()
{
return [
'username' => [new Username()],
];
}
```
### `WithoutSpaces`
The field under validation must not contain spaces.
```
public Arifszn\AdvancedValidation\Rules\WithoutSpaces::__construct(string $errorMessage = null)
```
```php
use Arifszn\AdvancedValidation\Rules\WithoutSpaces;
public function rules()
{
return [
'foo' => [new WithoutSpaces()],
];
}
```
## Tips
If you want to use the rules as strings and use them globally e.g. `'foo' => ['phone']`, you can do so by adding them to the boot method of your project's **AppServiceProvider**.
```php
message()
);
}
}
```
## Testing
```bash
composer test
```
## Contributing
Any contributors who want to make this project better can make contributions, which will be greatly appreciated. To contribute, clone this repo locally and commit your code to a new branch. Feel free to create an issue or make a pull request.
## Credits
- [validator.js](https://github.com/validatorjs/validator.js)
## Support
## License
This package is licensed under the [MIT License](https://github.com/arifszn/laravel-advanced-validation/blob/main/LICENSE).