Итак, при использовании стандартного элемента формы Select / выпадающего списка с применением Drupal 7 Form API возникает такая проблемка — непонятно, как получить заголовок выбранного посетителем сайта пункта, а не его целочисленный номер. Далее представлен один из самых простых вариантов решения вопроса.
Имеем, следующий код генерации Form (привожу отрывок для полноты картины):
function RedBookCms_MegaSuper_form($form, &$form_state) { // ... $form['primer_spiska'] = array( '#title' => 'Поисковая система', '#type' => 'select', '#options' => array( 0 => 'Bing', 1 => 'Yahoo', 2 => 'Google', 4 => 'Yandex', ), ); // ... return $form; }
Теперь собственно сам обработчик сабмита, получающий информацию с формы:
function RedBookCms_MegaSuper_form_submit(&$form, &$form_state) { // ... $primer_spiska = $form['primer_spiska']['#options'][$form_state['values']['primer_spiska']]; // ... drupal_set_message("Спасибо, ваша заявка обработана."); return $form; }
Вот собственно и все решение вопроса. Используем $form_state['values']['element']
для получения номера выбранного пользователем пункта из селекта, а затем указываем это число для выборки значения в $form['element']['#options']
.
P.S. Вроде бы ничего сложного, но не слишком очевидно. На официальной странице с описанием элементов Drupal Form API этого к сожалению нет, или я невнимательно смотрел / читал.
Свежие комментарии