Places validation is a laravel library that will help you out to handle your user addresses. Its aim is making sure the addresses submitted by users are valid through 3rd party services, as google.
Begin by installing the package through Composer. Run the following command in your terminal:
composer require gocanto/places-validation
Once composer is done, add the package service provider in the providers array in config/app.php
:
Gocanto\AddressValidation\ValidatorServiceProvider::class
Vuejs
component which implements the google autocomplete library:
- Repository: https://github.com/gocanto/google-autocomplete
- Demo: https://gocanto.github.io/google-autocomplete/
You will be able to set the validator driver into config/addressval.php
file. At the moment, the package just has the ability to work with google, but others services are planned ahead.
The array driver looks like this:
'driver' => [
//api key if required
'key' => '',
//driver object
'name' => 'GeoogleGeocode',
//api url
'api' => 'http://maps.google.com/maps/api/geocode/json'
],
if you do not set the driver within this file, the default one will be used.
Now you will be able to use this package to validate the user address information within your validations rules. This is how it would look like:
$rules = [
'address' => 'valid_place'
];
$data = [
'address' => 'Guacara, Carabobo, Venezuela'
];
$v = \Validator::make($data, $rules);
You will be able to see the implementation on ManagerTest
To implement the validation within your project, you have to include the Checker object as so:
use Gocanto\AddressValidation\Lib\Checker;
then, you can let laravel to handle the dependency injection for you, as so:
public function index(Checker $places)
{
if ( ! $v = $places->validate('Guacara, Carabobo, Venezuela')) {
//the place is not valid.
}
//retrieve the place information.
dd($v->retrieve(), $v->location());
}
Output Illustration
The inspiration came from a needed of using the validation within a form request object. I used Prosper Otemuyiwa package to have a scope of what I had to do.
Please feel free to fork this package and contribute by submitting a pull request to enhance the functionalities.
The MIT License (MIT). Please see License File for more information.
Why not star the github repo? Why not share the link for this repository on Twitter? Spread the word!
Don't forget to follow me on twitter!
Thanks!
Gustavo Ocanto. gustavoocanto@gmail.com