axlon / laravel-postal-code-validation
Worldwide postal code validation for Laravel and Lumen
Installs: 2 142 539
Dependents: 1
Suggesters: 0
Security: 0
Stars: 372
Watchers: 4
Forks: 29
Open Issues: 0
Requires
- php: ^7.2 || ^8.0
- illuminate/contracts: ^5.5 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/support: ^5.5 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/validation: ^5.5 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.8
- phpunit/phpunit: ^8.5 || ^9.6 || ^10.5
- symfony/var-exporter: ^4.0 || ^5.0 || ^6.0 || ^7.0
README
Worldwide postal code validation for Laravel, based on Google's Address Data Service.
Requirements
This package has the following requirements:
- PHP 7.2 or higher
- Laravel (or Lumen) 5.5 or higher
Installation
You can install this package with Composer, by running the command below:
composer require axlon/laravel-postal-code-validation
If you have package discovery enabled, that's it, continue to the usage section. If you want to register the
package manually, you can do this by adding the following line to your config/app.php
file:
'providers' => [ ... Axlon\PostalCodeValidation\ValidationServiceProvider::class, ... ],
Lumen
If you are using Lumen, register the package by adding the following line to your bootstrap/app.php
file:
$app->register(Axlon\PostalCodeValidation\ValidationServiceProvider::class);
Usage
Postal code validation perfectly integrates into your Laravel application, you can use it just like you would any framework validation rule.
Available rules
This package adds the following validation rules:
postal_code:foo,bar,...
The field under validation must be a valid postal code in at least one of the given countries. Arguments must be countries in ISO 3166-1 alpha-2 format.
'postal_code' => 'postal_code:NL,DE,FR,BE'
postal_code_with:foo,bar,...
The field under validation must be a postal code in at least one of the countries in the given fields only if at least one of the specified fields is present.
'billing.country' => 'required|string|max:2', ... 'shipping.country' => 'nullable|string|max:2', 'shipping.postal_code' => 'postal_code_with:billing.country,shipping.country'
Fluent API
If you prefer using a fluent object style over string based rules, that's also available:
'postal_code' => [ PostalCode::for('NL')->or('BE'), ],
The same goes for the postal_code_with
rule:
'billing.country' => 'required|string|max:2', ... 'shipping.country' => 'nullable|string|max:2', 'shipping.postal_code' => [ PostalCode::with('billing.country')->or('shipping.country') ],
Adding an error message
To add a meaningful error message, add the following lines to resources/lang/{your language}/validation.php
:
'postal_code' => 'Your message here', 'postal_code_with' => 'Your message here',
The following placeholders will be automatically filled for you:
*The :countries
and :examples
placeholders may be empty if no valid countries are passed.
Manually validating
If you want to validate postal codes manually outside of Laravel's validation system, you can call the validator directly, like so:
PostalCodes::passes($country, $postalCode); // returns a boolean
Overriding rules
Depending on your use case you may want to override the patterns used to validate postal codes for a country. You can do this by adding the code below in a central place in your application (e.g. a service provider):
PostalCodes::override('country', '/your pattern/'); // You can also pass overrides as an array PostalCodes::override([ 'country 1' => '/pattern 1/', 'country 2' => '/pattern 2/', ]);
Important: If you believe there is a bug in one of the patterns that this package ships with, please create an issue in the issue tracker.
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Credits
License
This open-source software is licenced under the MIT license. This software contains code generated from Google's Address Data Service, more information on this service can be found here.