A simple plugin that will generate an HTML select
element containing all world countries. Also has a validator that will validate the input.
Installation
Just install the plugin and add the "Country select form field" component to any of your pages where you want the select
element to be rendered. You can configure the element's id
, name
, class
, required
attributes, as well as the default value (either hard-coded or taken from the user's session).
Important note: To have the component auto-detect the user's languages, you need to install the Rainlab.Translate plugin.
Validation rule
The country can be validated using a validation rule, which validates the country based on the 2-character country code:
$data = Input::all(); $rules = [ // ... other validation rules 'country' => 'country', ]; $validation = Validator::make($data, $rules);
Getting localized country name
You can get the full country name from the submitted form in your component like this:
First use
the required classes:
use Input; use Multiwebinc\CountrySelect\Models\CountryList;
Then to get the English country name, you would do:
$country = CountryList::getCountryNameFromCountryCode(Input::get('country')); // e.g. Dominican Republic
Or if you want the country name in a language other than English, use the two-digit language code (see Internationalization section for a list of language codes):
$country = CountryList::getCountryNameFromCountryCode(Input::get('country'), 'es'); // e.g. República Dominicana
Internationalization
Countries are currently translated into the following languages:
ar - Arabic cn - Chinese cs - Czech da - Danish de - German el - Greek en - English (default) es - Spanish et - Estonian fr - French hu - Hungarian it - Italian ja - Japanese lt - Lithuanian nl - Dutch no - Norwegian pl - Polish pt - Portuguese ro - Romanian ru - Russian sk - Slovak th - Thai uk - Ukranian
-
Art
Found the plugin useful on 21 May, 2020
Simple but useful functionality that saves time! Great that there is country validation rule also.
Would be happy to have a formwidget for backend form to store alpha2 code in the field and to choose from the list of countries full name.
Did it myself now via form extending in my Plugin's boot(). Example for Lovata.Buddies plugin, User form:
Users::extendFormFields(function($form, $model, $context) { if (!$model instanceof User) return; $countries = CountryList::getCountries(); $options = []; foreach ($countries as $country) { $options[$country['alpha2']] = $country['name']; } $form->addTabfields([ 'property[country]' => [ 'label' => 'my.pluginname::lang.fields.country', 'tab' => 'lovata.toolbox::lang.tab.properties', 'type' => 'dropdown', 'span' => 'auto', 'options' => $options, ], ]); });
-
1.0.1 |
First version of countryselect Mar 18, 2020 |
---|