Laravel Countries and Currencies Package

Packages

March 2nd, 2017

laravel-countries-package.png

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:

1Countries::all()->pluck('name.common');
1[
2 "Aruba",
3 "Afghanistan",
4 "Angola",
5 "Anguilla",
6 "Åland Islands",
7 ....

Generate a list of States

In a lot of registration forms, you need to allow people to pick their state.

1Countries::where('name.common', 'United States')
2 ->first()
3 ->states
4 ->sortBy('name')
5 ->pluck('name', 'postal')

This gives you a result of the states that can then be used in a select list:

1{
2 "AL": "Alabama",
3 "AK": "Alaska",
4 "AZ": "Arizona",
5 "AR": "Arkansas",
6 "CA": "California",
7 ....

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:

1return Countries::where('name.common', 'United States')->first()->timezone->NC;

Returns:

1America/New_York

Get a countries currency

Need to get information on a specific countries currency? With this package it’s very easy:

1Countries::where('name.common', 'United States')->first()->currency;

Which returns:

1[{
2 "alternativeSigns": [],
3 "ISO4217Code": "USD",
4 "ISO4217Number": "840",
5 "sign": "$",
6 "subunits": 100,
7 "title": "U.S. dollar",
8 ....

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.

Filed in:

Eric L. Barnes

Eric is the creator of Laravel News and has been covering Laravel since 2012.