mattkingshott / axiom
A package that provides a library of reusable Laravel validation rules.
Installs: 113 502
Dependents: 0
Suggesters: 0
Security: 0
Stars: 523
Watchers: 13
Forks: 47
Open Issues: 0
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-rules
from yourcomposer.json
file. - Run
composer update
to remove the package from yourvendor
directory. - Install Axiom by running
composer require caneara/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
.
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.