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.
- Remove
alphametric/laravel-validation-rules
from yourcomposer.json
file. - Run
composer update
to remove the package from yourvendor
directory. - Install Axiom by running
composer require mattkingshott/axiom
. - Replace all instances of
use Alphametric\Validation
withuse Axiom
. - The
EndsWith
rule has been removed as Laravel now natively supports this. - The
Equals
rule has been removed. Instead, you should use Laravel's nativein
rule with a single option. - The
DoesNotExist
rule has been renamed toMissing
.
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 array
e.g.
'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:
Rule | Message Key | Description |
---|---|---|
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.