Flick
Guide Validation Services API Pro Examples GitHub
Docs / Features

Prebuilt Dropdowns

Flick includes 16 ready-to-use dropdown menus for common form fields. These save you from manually creating options for frequently needed data like states, countries, months, and more.

Quick Reference

Name Description Options
states US States + DC 51
provinces Canadian Provinces & Territories 13
statesProvinces Combined US & Canadian (grouped) 64
countries World countries, alphabetical 239
countriesUs World countries (US/CA/GB first) 240
timezones World timezones with UTC offsets 419
months Month names (January-December) 12
months2 Numbered months (01 January) 12
days Days of current month (dynamic) 28-31
years Historical years (1930-present) 97
yearsPlus Future years (now to +10) 11
heights Imperial heights (4'0" - 6'+) 26
heightsMetric Metric heights (122cm - 183cm+) 26
languages ISO 639-1 language codes 184
currencies ISO 4217 currency codes 168
ages Age group brackets 18

Usage

There are three ways to use prebuilt dropdowns:

String Syntax

The fastest way to add a dropdown to your form:

$form->create('State|select(states)');

Add a default placeholder option with :::

$form->create('State|select(states::Select a State...)');

Method Syntax

Using the select() method directly:

echo $form->select('state', 'State', '', 'states');

With a default selected value:

echo $form->select('state', 'State', 'CA', 'states');

Array Syntax

When defining forms as arrays:

$form->create([
    'fields' => [
        'state' => [
            'type' => 'select',
            'label' => 'State',
            'options' => 'states'
        ]
    ]
]);

Geographic Dropdowns

US States (states)

All 50 US states plus Washington D.C. — 51 options.

$form->create('State|select(states)');

Sample Output:

Value Label
AL Alabama
AK Alaska
AZ Arizona
CA California
... ...
DC Washington D.C.
WY Wyoming

Tip

Values are 2-letter state abbreviations, making them ideal for database storage and address forms.


Canadian Provinces (provinces)

All 10 Canadian provinces and 3 territories.

$form->create('Province|select(provinces)');

Sample Output:

Value Label
AB Alberta
BC British Columbia
MB Manitoba
ON Ontario
QC Quebec
... ...
YT Yukon

Combined US & Canadian (statesProvinces)

US states and Canadian provinces in a grouped dropdown with <optgroup> labels.

$form->create('State/Province|select(statesProvinces)');

Output Structure:

<optgroup label="States">
    <option value="AL">Alabama</option>
    <option value="AK">Alaska</option>
    ...
</optgroup>
<optgroup label="Provinces">
    <option value="AB">Alberta</option>
    <option value="BC">British Columbia</option>
    ...
</optgroup>

Tip

This is perfect for North American shipping or billing forms where you need to support both countries.


Countries (countries)

239 countries in alphabetical order, keyed by ISO 3166-1 alpha-2 code.

$form->create('Country|select(countries)');

Sample Output:

Value Label
AF Afghanistan
AL Albania
DZ Algeria
... ...
ZW Zimbabwe

Countries, US first (countriesUs)

The same list with US, Canada, and UK pulled to the top — 240 entries, the extra one being the separator row.

$form->create('Country|select(countriesUs)');

Sample Output:

Value Label
US United States
CA Canada
GB United Kingdom
---------------
AF Afghanistan
AL Albania
... ...

Tip

The separator line (---------------) visually separates the priority countries from the alphabetical list.


Timezones (timezones)

419 world timezones with UTC offset labels.

$form->create('Timezone|select(timezones)');

Sample Output:

Value Label
Pacific/Honolulu (UTC-10:00) Honolulu
America/Los_Angeles (UTC-08:00) Los Angeles
America/Denver (UTC-07:00) Denver
America/Chicago (UTC-06:00) Chicago
America/New_York (UTC-05:00) New York
Europe/London (UTC+00:00) London
... ...

Tip

Values are PHP timezone identifiers, which you can use directly with date_default_timezone_set() or DateTimeZone.


Temporal Dropdowns

Months (months)

Standard month names with numeric keys.

$form->create('Month|select(months)');

Output:

Value Label
1 January
2 February
3 March
... ...
12 December

Numbered Months (months2)

Month names with leading zero numbers for display.

$form->create('Month|select(months2)');

Output:

Value Label
1 01 January
2 02 February
3 03 March
... ...
12 12 December

Tip

Use this format when you want users to clearly see month numbers alongside names, useful for date entry forms.


Days (days)

Dynamic dropdown that returns days 1-28, 1-29, 1-30, or 1-31 based on the current month.

$form->create('Day|select(days)');

Output (varies by month):

Value Label
1 1
2 2
... ...
28/29/30/31 (depends on current month)

Warning

This dropdown automatically adjusts for the current month when the page loads. If you need a specific month's days, create a custom dropdown instead.


Past Years (years)

Years from 1930 to the current year, in descending order (most recent first).

$form->create('Birth Year|select(years)');

Output (in 2026):

Value Label
2026 2026
2025 2025
2024 2024
... ...
1930 1930

Tip

This is ideal for birth date forms, historical data entry, or any field requiring past years.


Future Years (yearsPlus)

Current year through 10 years in the future.

$form->create('Expiration Year|select(yearsPlus)');

Output (in 2026):

Value Label
2026 2026
2027 2027
2028 2028
... ...
2036 2036

Tip

Perfect for credit card expiration dates, subscription periods, or event scheduling.


Measurement Dropdowns

Heights - Imperial (heights)

Height options in feet and inches format.

$form->create('Height|select(heights)');

Output:

Value Label
3-0 Under 4'
4-0 4' 0"
4-1 4' 1"
... ...
5-9 5' 9"
5-10 5' 10"
5-11 5' 11"
6-0 6' & Over

Heights - Metric (heightsMetric)

Height options in centimeters.

$form->create('Height|select(heightsMetric)');

Output:

Value Label
under-122 Under 122 cm
122 122 cm
124.5 124.5 cm
... ...
179.5 179.5 cm
183-over 183 cm & Over

Tip

Values increment by 2.5 cm, which is approximately 1 inch. Use this for international forms or metric-preference regions.


Language & Currency

Languages (languages)

184 languages using ISO 639-1 two-letter codes.

$form->create('Language|select(languages)');

Sample Output:

Value Label
en English
es Spanish, Castilian
fr French
de German
zh Chinese
ar Arabic
ja Japanese
... ...

Tip

Languages are sorted alphabetically by name, not by code.


Currencies (currencies)

168 world currencies using ISO 4217 three-letter codes, including cryptocurrencies.

$form->create('Currency|select(currencies)');

Sample Output:

Value Label
USD US Dollar
EUR Euro
GBP British Pound Sterling
CAD Canadian Dollar
AUD Australian Dollar
JPY Japanese Yen
BTC Bitcoin
... ...

Demographic

Age Groups (ages)

18 age brackets for demographic data collection.

$form->create('Age Group|select(ages)');

Output:

Value Label
0-4 Infants/Toddlers (0-4)
5-9 Children (5-9)
10-14 Preteens (10-14)
15-19 Teenagers (15-19)
20-24 Young Adults (20-24)
25-29 Late 20s (25-29)
30-34 Early 30s (30-34)
... ...
80-84 Early 80s (80-84)
85+ 85 and older

Tip

Values are the age ranges themselves, making them easy to store and query in databases.


Creating Custom Dropdowns

Need a dropdown that isn't included? You can create your own. See the Customize documentation for instructions on adding custom dropdowns.