| Package Data | |
|---|---|
| Maintainer Username: | AntonioCarlosRibeiro |
| Maintainer Contact: | acr@antoniocarlosribeiro.com (Antonio Carlos Ribeiro) |
| Package Create Date: | 2018-01-22 |
| Package Last Update: | 2023-05-01 |
| Language: | PHP |
| License: | BSD-3-Clause |
| Last Refreshed: | 2025-10-19 15:03:42 |
| Package Statistics | |
|---|---|
| Total Downloads: | 1,051,390 |
| Monthly Downloads: | 3,169 |
| Daily Downloads: | 14 |
| Total Stars: | 147 |
| Total Watchers: | 6 |
| Total Forks: | 47 |
| Total Open Issues: | 19 |

This package has all sorts of information about countries:
| info | items | ------------------|-------:| | taxes | 32 | | geometry maps | 248 | | topology maps | 248 | | currencies | 256 | | countries | 266 | | timezones | 423 | | borders | 649 | | flags | 1,570 | | states | 4,526 | | cities | 7,376 | | timezones times | 81,153 |
The validation is extending Laravel's validation, so you can use it like any other validation rules, like
/**
* Store a new blog post.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$this->validate($request, [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
'country' => 'country' //Checks if valid name.common
]);
// The blog post is valid, store in database...
}
Which validation rules there is and what there name should be, can all be configured in the configuration file.
'validation' => [
'rules' => [
'countryCommon' => 'name.common'
]
]
By changing the configuration like this, we can now access the property name.common, by the validation rule countryCommon
You have to define all the validations rules in settings, only a few is defined by default, the default is
'rules' => [
'country' => 'name.common',
'cca2',
'cca2',
'cca3',
'ccn3',
'cioc',
'currencies' => 'ISO4217',
'language',
'language_short' => 'ISO639_3',
]
This package is a Laravel bridge, please refer to the main package repository for more information and docs.
Use Composer to install it:
composer require pragmarx/countries-laravel
You can publish configuration by doing:
php artisan vendor:publish --provider=PragmaRX\\CountriesLaravel\\Package\\ServiceProvider
After installing you'll have access to the Countries Façade, and the package is based on Laravel Collections, so you basically have access to all methods in Collections, like
$france = Countries::where('name.common', 'France');
You can refer directly to an SVG flag by linking
/pragmarx/countries/flag/download/<cca3-code>.svg
/pragmarx/countries/flag/file/<cca3-code>.svg
Examples:
https://laravel.com/pragmarx/countries/flag/download/usa.svg
https://laravel.com/pragmarx/countries/flag/file/usa.svg
http://pragmarx.test/pragmarx/countries/flag/file/usa.svg
Countries is licensed under the MIT License - see the LICENSE file for details
Pull requests and issues are more than welcome.