Получить значение параметров в php Drupal Form - PullRequest
2 голосов
/ 08 марта 2011

обновление

Я создал Drupal Form с Form API.Я использовал элемент select, мой вопрос, как я могу получить значение, которое выбрал пользователь?Для примера: следующий код.Как я могу узнать, что пользователь выбрал для «Титулы плюс тизер» (тизер).Спасибо!

form ['planning_detail']['study_groep'] = array (
   '# type =' select ',
   '# title' = 'Pick a value',
   '# options' => array (
   'title' => t ('Titles only '),
   'teaser' => t ('Titles plus teaser'),
   'full text' => t ('Full text '),
   )
);

Ответы [ 3 ]

1 голос
/ 17 мая 2011
function my_form_submit(&$form, &$form_state) {
  $field_key = $form_state['values']['field_name']
  $value = $form['field_name']['#options'][$field_key];
  drupal_set_message($value);
}

Правильный атрибут '#options' должен быть в ''

1 голос
/ 08 марта 2011

Вам нужно сделать обработчик отправки формы для вашей формы. Вы можете сделать это, создав функцию с именем FORMNAME_submit:

function my_form_submit(&$form, &$form_state) {
  $form_state['values']['field_name'] == 'title'; // TRUE
  $form['field_name'][#options][$form_state['values']['field_name']] ==  t('Titles only '); // TRUE
}

form_state - это массив, который содержит много информации о состоянии формы, а также содержит все отправленные значения. По умолчанию они находятся в плоском списке с именем поля элемента формы. В дескрипторах отправки вы обычно обрабатываете данные, отправленные пользователем, например, сохраняете их в базе данных и т. Д. У форм также есть проверка, которая будет вызываться перед обработчиком отправки. С помощью API формы можно создавать ошибки формы, если пользовательский ввод не проверяется. Когда с помощью API создается ошибка, на шаге validate функция submit не вызывается. Это означает, что вы будете знать, что при вызове функции submit данные не содержат ошибок.

Обновлен:
Если вы хотите получить значение, отображаемое для пользователя, вы можете получить к нему доступ, обратившись к массиву форм, предоставленному в обработчиках проверки / отправки. Я показал это в приведенном выше примере.

0 голосов
/ 08 марта 2011

При условии, что эти опции помещены в список выбора

$form['my_select'] = array(
  '#type = 'select',
  '#title' = 'Pick a value',
  '#options' => array(
  'title' => t('Titles only'),
  'teaser' => t('Titles plus teaser'),
  'fulltext' => t('Full text'),
  )
);

Вы можете получить доступ к значению, как это

$form['my_select']['#value']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...