A simple Laravel 5 wrapper for the IsoCodes Validation library from ronanguilloux.
For a Laravel 8 compatible version please use https://github.com/pixelpeter/laravel-isocodes-validation
composer require pixelpeter/laravel5-isocodes-validation
(not needed starting with v2.x because of auto discovery)
Add the service provider in app/config/app.php
'provider' => [
...
Pixelpeter\IsoCodesValidation\IsoCodesValidationServiceProvider::class,
...
];
// Checking out your e-commerce shopping cart?
$payload = [
'creditcard' => '12345679123456'
];
$rules = [
'creditcard' => 'creditcard'
];
$validator = Validator::make($payload, $rules);
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);
(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'
]);
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".
Refer to IsoCodes Validation library for more examples and documentation.
Run the tests with:
vendor/bin/phpunit
GNU General Public License v3.0 only. Please see License File for more information.