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.