A package that provides a library of reusable Laravel validation rules.
This package provides a library of reusable validation rules for your Laravel projects. Use them to augment the existing set provided by Laravel itself.
Axiom is a re-release of the original
alphametric/laravel-validation-rules package, which was also created by myself. This new version includes a rewrite to support PHP 7.4+ and also includes type hinting as well as some additional refactoring.
Pull in the package using composer
composer require mattkingshott/axiom
Axiom includes several breaking changes from the original package, so you'll need to follow these steps if you were using the old version:
- Ensure that you are using PHP 7.4 or later.
composer updateto remove the package from your
- Install Axiom by running
composer require mattkingshott/axiom.
- Replace all instances of
EndsWithrule has been removed as Laravel now natively supports this.
Equalsrule has been removed. Instead, you should use Laravel's native
inrule with a single option.
DoesNotExistrule has been renamed to
As per the Laravel documentation, simply import the relevant validation class wherever you require it, and then include it within the rules for a particular field:
use Axiom\Rules\StrongPassword; // ... $request->validate([ 'password' => ['bail', 'required', new StrongPassword], ]);
IMPORTANT: As with all custom rules, you cannot use a pipe-delimited string. You must instead use an
'password' => ['bail', 'required', new StrongPassword] // correct 'password' => 'bail|required|new StrongPassword' // wrong
If the validation fails, the package will attempt to respond with a localized error message (see message keys below). If the key does not exist, it will fall back to a hard-coded English language version.
The following validation rules are currently available:
|StrongPassword||validation.strong_password||Requires the presence of a "strong" password - see class for details|
|TelephoneNumber||validation.telephone_number||Requires the presence of a valid telephone number - see class for details|
|RecordOwner||validation.record_owner||Requires the authenticated user's id to match the user_id column on a given database record e.g. owner:posts,id|
|MonetaryFigure||validation.monetary_figure||Requires the presence of a monetary figure e.g $72.33 - see class for details|
|DisposableEmail||validation.disposable_email||Requires the presence of an email address which is not disposable|
|Missing||validation.missing||Requires that the given value is not present in a given database table / column - see class for details|
|Decimal||validation.decimal||Requires that the given value is a decimal with an appropriate format - see class for details|
|EncodedImage||validation.encoded_image||Requires that the given value is a base64-encoded image of a given mime types - see class for details|
|LocationCoordinates||validation.location_coordinates||Requires that the given value is a comma-separated set of latitude and longitude coordinates|
|FileExists||validation.file_exists||Requires that the given value is a path to an existing file - see class for details|
|MacAddress||validation.mac_address||Requires that the given value is a valid MAC address|
|ISBN||validation.isbn||Requires that the given value is a valid ISBN-10 or ISBN-13 number|
|EvenNumber||validation.even_number||Requires that the given value is an even number (decimals are first converted using intval)|
|OddNumber||validation.odd_number||Requires that the given value is an odd number (decimals are first converted using intval)|
|Lowercase||validation.lowercase||Requires that the given value is a lower case string|
|Uppercase||validation.uppercase||Requires that the given value is a upper case string|
|Titlecase||validation.titlecase||Requires that the given value is a title case string|
|Domain||validation.domain||Requires that the given value be a domain e.g. google.com, www.google.com|
|CitizenIdentification||validation.citizen_identification||Requires that the given value be a citizen identification number of USA, UK, France, Brazil or Vietnam (see class for details)|
|WithoutWhitespace||validation.without_whitespace||Requires that the given value not include any whitespace characters|
|MaxWords||validation.max_words||Requires that the given value cannot contain more words than specified|
|HexColor||validation.hex_color||Requires that the given value is a valid hex color eg. #fff, #0f0f0f, #00ff0080|
Thank you for considering a contribution to Axiom. You are welcome to submit a PR containing improvements, however if they are substantial in nature, please also be sure to include a test or tests.
If you'd like to support the development of Axiom, then please consider sponsoring me. Thanks so much!
The MIT License (MIT). Please see License File for more information.