Я знаю, что один путь состоит в том, чтобы иметь таблицу в базе данных со всеми состояниями, и затем Вы считали бы его в своей форме. Есть ли в Ваших парнях мнения какой-либо более легкий путь?
Я плохо себя чувствую, прося что-то вроде этого, так как это столь же элементарно однако, я предположил бы что-то, как простой как это будет уже реализован в Drupal.
Нет необходимости обращаться к базе данных. Создайте себе функцию, которая возвращает массив состояний.
$form['state'] = array(
'#type' => 'select',
'#options' => mymodule_states_list(),
'#title' => t('State'),
);
function mymodule_states_list() {
return array(
'AL' => 'Alabama',
'AK' => 'Alaska',
...
'WY' => 'Wyoming',
);
}
Если вы создаете форму с помощью FormAPI Drupal, вы можете просто включить массив состояний в код вашего модуля, поскольку имена и сокращения не должны меняться в ближайшее время.
Если вы пытаетесь сохранить свой код в чистоте, вы можете сохранить массив состояний как переменную Drupal с помощью variable_set (), а затем получить его с помощью variable_get (). Вам действительно не нужно возиться с базой данных для такого рода вещей.
Конечно, это один из способов сделать это. Вы можете сохранить список состояний как переменную и вызвать его.
$options = variable_get('mymodule_us_states', 0);
Пока это массив. У вас также может быть внутренняя функция, которая возвращает состояния.
Или сохраните его в плоском файле и прочтите его. Например,
Flat file =
$us_states_options = array(
'AL' => 'Alabama',
'AK' => 'Alaska',
//...etc
)
Функция:
include_once(drupal_get_path('module', 'module_name') .'/us_states.inc');
Все довольно некрасиво, но вы, по крайней мере, можете редактировать этот файл независимо и может хорошо работать, если у вас есть более крупный список. Есть миллион способов включить этот список - с помощью exec, fgetcsv / file и т. Д.
Но я думаю, что решение ceejayoz - лучшее. Я бы, наверное, выделил такие вспомогательные функции в отдельный include, чтобы самому держать его в чистоте.
Модуль API кодов стран также предоставляет модуль API кодов регионов, который включает штаты США. С помощью этого модуля вы можете получить массив, подходящий для элемента выбора Form API, вызвав region_api_iso2_get_options_array ('US')
.
Только что вспомнил этот вопрос, когда экспериментировал с модулем Geonames. Помимо множества других функций, Geonames включает функцию geonames_us_states (), которая возвращает массив штатов США с двухбуквенным кодом штатов.