pixelpeter / laravel-isocodes-validation
Laravel 8+ wrapper for the IsoCodes Validation library from ronanguilloux
Installs: 80 144
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 2
Open Issues: 0
Requires
- php: ^8.1|^8.2|^8.3
- laravel/laravel: ^10.0|^11.0
- ronanguilloux/isocodes: ^2.3.5
Requires (Dev)
- mockery/mockery: ^1.2
- php-coveralls/php-coveralls: ^2.7
- phpstan/extension-installer: ^1.4
- phpunit/phpunit: ^10.5|^11.0
README
A simple Laravel 8+ wrapper for the IsoCodes Validation library from ronanguilloux.
Installation
Step 1: Install Through Composer
composer require pixelpeter/laravel-isocodes-validation
Step 2: Add the Service Provider
(not needed starting with v2.x because of auto discovery)
Add the service provider in app/config/app.php
'provider' => [ ... Pixelpeter\IsoCodesValidation\IsoCodesValidationServiceProvider::class, ... ];
Usage
Simple examples
// Checking out your e-commerce shopping cart? $payload = [ 'creditcard' => '12345679123456' ]; $rules = [ 'creditcard' => 'creditcard' ]; $validator = Validator::make($payload, $rules);
Examples with reference parameter
Some rules need a reference to be validated against (e.g. country
for zipcode
).
Just pass the name of the field holding the reference to the rule.
// Sending letters to the Labrador Islands ? $payload = [ 'zipcode' => 'A0A 1A0', 'country' => 'CA' ]; $rules = [ 'zipcode' => 'zipcode:country' ]; $validator = Validator::make($payload, $rules); // Publishing books? $payload = [ 'isbn' => '2-2110-4199-X', 'isbntype' => 13 ]; $rules = [ 'zipcode' => 'isbn:isbntype' ]; $validator = Validator::make($payload, $rules);
Example with arrays and dot notation
(added in v3.x)
As suggested by @otr-tomek I've added support for all validation methods using arrays in dot notation as an input.
$payload = [ 'data' => [ [ 'country' => 'DE', 'zipcode' => 63741 ], [ 'country' => 'AT', 'zipcode' => 1180 ] ] ]; $validator = Validator::make($payload, [ 'data.*.zipcode' => 'zipcode:data.*.country' ]);
Validation error messages
Error messages can contain the name and value of the field and the value of the reference
$payload = [ 'phonenumber' => 'invalid', 'country' => 'GB' ]; $rules = [ 'phonenumber' => 'phonenumber:country' ]; $validator = Validator::make($payload, $rules); print $validator->errors()->first(); // The value "invalid" of phonenumber is not valid for "GB".
More Examples
Refer to IsoCodes Validation library for more examples and documentation.
Testing
Run the tests with:
vendor/bin/phpunit
License
GNU General Public License v3.0 only. Please see License File for more information.