mattkingshott / axiom
A package that provides a library of reusable Laravel validation rules.
Installs: 124 111
Dependents: 0
Suggesters: 0
Security: 0
Stars: 523
Watchers: 13
Forks: 47
Open Issues: 0
pkg:composer/mattkingshott/axiom
Requires
- php: ^7.4|^8.0
 
Requires (Dev)
- orchestra/testbench: ^6.0
 - phpunit/phpunit: ^9.0
 
README
This package provides a library of reusable validation rules for your Laravel projects. Use them to augment the existing set provided by Laravel itself.
Installation
Pull in the package using composer
composer require caneara/axiom
Upgrading
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-rulesfrom yourcomposer.jsonfile. - Run 
composer updateto remove the package from yourvendordirectory. - Install Axiom by running 
composer require caneara/axiom. - Replace all instances of 
use Alphametric\Validationwithuse Axiom. - The 
EndsWithrule has been removed as Laravel now natively supports this. - The 
Equalsrule has been removed. Instead, you should use Laravel's nativeinrule with a single option. - The 
DoesNotExistrule has been renamed toMissing. 
Usage
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.
Available rules
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 | 
Contributing
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.
License
The MIT License (MIT). Please see License File for more information.