Laravel Countries and Currencies Package
Published on by Eric L. Barnes
Antonio Carlos Ribeiro recently launched a new package that gives you a powerful setup for dealing with the different Countries of the world, all through a comfortable Laravel syntax using Collections.
The package does a lot. Everything from geology and topology, to states, currencies, and time zones.
As I was reviewing it I tried to think of some common use cases that almost every app needs and here are a few examples:
Generate a list of Countries
Need a list of all the countries in the world? It’s as simple as calling:
Countries::all()->pluck('name.common');
[ "Aruba", "Afghanistan", "Angola", "Anguilla", "Åland Islands", ....
Generate a list of States
In a lot of registration forms, you need to allow people to pick their state.
Countries::where('name.common', 'United States') ->first() ->states ->sortBy('name') ->pluck('name', 'postal')
This gives you a result of the states that can then be used in a select list:
{ "AL": "Alabama", "AK": "Alaska", "AZ": "Arizona", "AR": "Arkansas", "CA": "California", ....
Get the timezone for a State
Another typical pattern is figuring out a timezone. If you already have the users country and state it’s now super easy:
return Countries::where('name.common', 'United States')->first()->timezone->NC;
Returns:
America/New_York
Get a countries currency
Need to get information on a specific countries currency? With this package it’s very easy:
Countries::where('name.common', 'United States')->first()->currency;
Which returns:
[{ "alternativeSigns": [], "ISO4217Code": "USD", "ISO4217Number": "840", "sign": "$", "subunits": 100, "title": "U.S. dollar", ....
These examples are just the basics of what can be done. It supports the following countries, states, and currencies:
- Countries
- name (common and native)
- currency
- languages
- states
- timezone
- flags (sprites, flag icons, svg)
- tld
- multiple ISO codes
- calling code
- capital
- alternate spellings
- region & sub region
- translations (country name translated to some other languages)
- latitude and logitude
- borders (countries) – you can hydrate those borders (like relatioships)
- area
- topology
- geometry
- Currencies
- sign
- ISO codes
- title
- subunits
- usage (dates)
- States
- adm codes
- name & alt name
- type (state, city, province, canton, department, district, etc.)
- latitude & longitude
- language
- (and many more)
For more information on this package check out the GitHub repo.
Eric is the creator of Laravel News and has been covering Laravel since 2012.