Самый эффективный способ иметь 50 выпадающих полей состояния в Формах Drupal

Я знаю, что один путь состоит в том, чтобы иметь таблицу в базе данных со всеми состояниями, и затем Вы считали бы его в своей форме. Есть ли в Ваших парнях мнения какой-либо более легкий путь?

Я плохо себя чувствую, прося что-то вроде этого, так как это столь же элементарно однако, я предположил бы что-то, как простой как это будет уже реализован в Drupal.

1
задан user363036 14 June 2010 в 03:40
поделиться

6 ответов

Нет необходимости обращаться к базе данных. Создайте себе функцию, которая возвращает массив состояний.

$form['state'] = array(
  '#type' => 'select',
  '#options' => mymodule_states_list(),
  '#title' => t('State'),
);

function mymodule_states_list() {
  return array(
    'AL' => 'Alabama',
    'AK' => 'Alaska',
    ...
    'WY' => 'Wyoming',
  );
}
2
ответ дан 2 September 2019 в 23:47
поделиться

Если вы создаете форму с помощью FormAPI Drupal, вы можете просто включить массив состояний в код вашего модуля, поскольку имена и сокращения не должны меняться в ближайшее время.

Если вы пытаетесь сохранить свой код в чистоте, вы можете сохранить массив состояний как переменную Drupal с помощью variable_set (), а затем получить его с помощью variable_get (). Вам действительно не нужно возиться с базой данных для такого рода вещей.

0
ответ дан 2 September 2019 в 23:47
поделиться

Конечно, это один из способов сделать это. Вы можете сохранить список состояний как переменную и вызвать его.

$options = variable_get('mymodule_us_states', 0);

Пока это массив. У вас также может быть внутренняя функция, которая возвращает состояния.

0
ответ дан 2 September 2019 в 23:47
поделиться

Или сохраните его в плоском файле и прочтите его. Например,

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, чтобы самому держать его в чистоте.

0
ответ дан 2 September 2019 в 23:47
поделиться

Модуль API кодов стран также предоставляет модуль API кодов регионов, который включает штаты США. С помощью этого модуля вы можете получить массив, подходящий для элемента выбора Form API, вызвав region_api_iso2_get_options_array ('US') .

0
ответ дан 2 September 2019 в 23:47
поделиться

Только что вспомнил этот вопрос, когда экспериментировал с модулем Geonames. Помимо множества других функций, Geonames включает функцию geonames_us_states (), которая возвращает массив штатов США с двухбуквенным кодом штатов.

0
ответ дан 2 September 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: