Product support

Visit this product's website for support.


  • Developer Tools

This plugin adds location based features to OctoberCMS.

  • Easily add Country and State to any model
  • Form widget for address lookups (Google API)

Extended features

To integrate locations with front-end users consider installing the User Plus+ plugin (RainLab.UserPlus).

Google API key requirement

As of June 22, 2016 the Google Maps service requires an API key. You may generate a key from the following link:

Copy the key and enter it in the Settings > Location settings area. If you find the address finder is not working, you may need to enable the Places Web Service.

The following themes use this plugin:

Add Country and State to any model

This plugin provides an easy way to add location fields, country and state, to any model. Simply add these columns to the database table:


Then implement the RainLab.Location.Behaviors.LocationModel behavior in the model class:

public $implement = ['RainLab.Location.Behaviors.LocationModel'];

This will automatically create two "belongs to" relationships:

  1. state - relation for RainLab\Location\Models\State
  2. country - relation for RainLab\Location\Models\Country

Back-end usage


You are free to add the following form field definitions:

    label: rainlab.location::lang.country.label
    type: dropdown
    span: left
    placeholder: rainlab.location::lang.country.select

    label: rainlab.location::lang.state.label
    type: dropdown
    span: right
    dependsOn: country
    placeholder: rainlab.location::lang.state.select


For the list column definitions, you can use the following snippet:

     label: rainlab.location::lang.country.label
     searchable: true
     relation: country
     select: name
     sortable: false

     label: rainlab.location::lang.state.label
     searchable: true
     relation: state
     select: name
     sortable: false

Front-end usage

The front-end can also use the relationships by creating a partial called country-state with the content:

{% set countryId = countryId|default(form_value('country_id')) %}
{% set stateId = stateId|default(form_value('state_id')) %}

<div class="form-group">
    <label for="accountCountry">Country</label>
    {{ form_select_country('country_id', countryId, {
        id: 'accountCountry',
        class: 'form-control',
        emptyOption: '',
        'data-request': 'onInit',
        'data-request-update': {
            'country-state': '#partialCountryState'
    }) }}

<div class="form-group">
    <label for="accountState">State</label>
    {{ form_select_state('state_id', countryId, stateId, {
        id: 'accountState',
        class: 'form-control',
        emptyOption: ''
    }) }}

This partial can be rendered in a form with the following:

<div id="partialCountryState">
    {% partial 'country-state' countryId=user.country_id stateId=user.state_id %}

Short code accessors

The behavior will also add a special short code accessor and setter to the model that converts country_code and state_code to their respective identifiers.

// Softly looks up and sets the country_id and state_id
// for these Country and State relations.

$model->country_code = "US";
$model->state_code = "FL";

Address Finder Form Widget

This plugin introduces an address lookup form field called addressfinder. The form widget renders a Google Maps autocomplete address field that automatically populates mapped fields based on the value entered and selected in the address.

Available mappings:

  • street
  • city
  • zip
  • state
  • country
  • country-long
  • latitude
  • longitude
  • vicinity


# ===================================
#  Form Field Definitions
# ===================================

        label: Address
        type: addressfinder
            latitude: latitude
            longitude: longitude
            city: city
            zip: zip
            country: country_code
            state: state_code
            vicinity: vicinity

        label: City
        label: Zip
        label: Country
        label: State
        label: Latitude
        label: Longitude
        label: Vicinity
  • Found the plugin useful on 25 Jan, 2017

    Great plugin! Using it on my new project and I find it the best in October CMS marketplace yet.

  • Found the plugin useful on 3 Jan, 2016

    Thanks Master :D


Include Mexico states

Oct 05, 2018


Added basic geocoding method to the Country model.

Sep 15, 2016


Added support for defining a default country and state.

Sep 03, 2016


Countries can now be pinned to make them appear at the top of the list.

Aug 30, 2016


Satisfy the new Google API key requirement.

Jul 08, 2016


Add seed data for countries and states.

Sep 25, 2015


Create database tables.

Sep 25, 2015


Initialize plugin.

Sep 25, 2015