76 lines
2.7 KiB
Markdown
76 lines
2.7 KiB
Markdown
# Laravel Phone Validator
|
|
|
|
Adds a phone validator to Laravel 5 based on the [PHP port](https://github.com/giggsey/libphonenumber-for-php) of [Google's libphonenumber API](https://code.google.com/p/libphonenumber/) by [giggsey](https://github.com/giggsey).
|
|
|
|
### Installation
|
|
|
|
1. In the `require` key of `composer.json` file add the following
|
|
|
|
```json
|
|
"propaganistas/laravel-phone": "~2.0"
|
|
```
|
|
|
|
If you need the Laravel 4 version, you can point at version `~1.2` or head over to the `Laravel4` branch.
|
|
|
|
2. Run the Composer update comand
|
|
|
|
```bash
|
|
$ composer update
|
|
```
|
|
|
|
3. In your `app/config/app.php` add `'Propaganistas\LaravelPhone\LaravelPhoneServiceProvider',` to the end of the `$providers` array
|
|
|
|
```php
|
|
'providers' => [
|
|
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
|
|
'Illuminate\Auth\AuthServiceProvider',
|
|
...
|
|
'Propaganistas\LaravelPhone\LaravelPhoneServiceProvider',
|
|
],
|
|
```
|
|
|
|
4. In your languages directory, add for each language an extra language line for the validator:
|
|
|
|
```php
|
|
"phone" => "The :attribute field contains an invalid number.",
|
|
```
|
|
|
|
### Usage
|
|
|
|
To validate a field using the phone validator, use the `phone` keyword in your validation rules array. The phone validator is able to operate in two ways.
|
|
|
|
- You either specify *ISO 3166-1 compliant* country codes yourself as parameters for the validator, e.g.:
|
|
|
|
```php
|
|
public static $rules = [
|
|
'phonefield' => 'phone:US,BE',
|
|
];
|
|
```
|
|
|
|
The validator will check if the number is valid in at least one of provided countries, so feel free to add as many country codes as you like.
|
|
|
|
- Or you don't specify any parameters but you plug in a dedicated country input field (keyed by *ISO 3166-1 compliant* country codes) to allow end users to supply a country on their own. The easiest method by far is to install the [CountryList package by monarobase](https://github.com/Monarobase/country-list). The country field has to be named similar to the phone field but with `_country` appended:
|
|
|
|
```php
|
|
public static $rules = [
|
|
'phonefield' => 'phone',
|
|
'phonefield_country' => 'required_with:phonefield',
|
|
];
|
|
```
|
|
|
|
If using the CountryList package, you could then use the following in the form view:
|
|
|
|
```php
|
|
{{ Form::text('phonefield') }}
|
|
{{ Form::select('phonefield_country', Countries::getList(App::getLocale(), 'php', 'cldr')) }}
|
|
```
|
|
|
|
### Display
|
|
Format a fetched phone value using the helper function:
|
|
|
|
```php
|
|
phone_format($phone_number, $country_code, $format = null)
|
|
```
|
|
|
|
The `$format` parameter is optional and should be a constant of `\libphonenumber\PhoneNumberFormat` (defaults to `\libphonenumber\PhoneNumberFormat::INTERNATIONAL`)
|