Получение отправленных значений поста в Drupal 7 - PullRequest
3 голосов
/ 01 ноября 2011

У меня проблемы с доступом к опубликованным значениям после отправки формы в Drupal 7.

Скажем, у меня есть простая форма с одним текстовым полем и кнопкой отправки.

function sample_form($form, &$form_state){
  $form['sample']['name'] = array(
  '#description' => 'Name',
  '#value' => 'Name',
  '#type' => 'textfield',
  );
 $form['sample']['sample_submit'] = array(
   '#type' => 'submit',
   '#value' => 'SUBMIT',
   '#submit' => array('sample_form_submit')
 );
}

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

function sample_form_submit($form, &$form_state){
  drupal_set_message($form_state['values']['name']);
}

Однако сообщение всегда содержит значение по умолчанию для текстового поля, в данном случае «имя». Если я введу «Майк» и нажму «Отправить», в сообщении отобразится «имя» (значение по умолчанию).

Как я могу получить при отправленных значениях? Я знаю, что могу получить доступ с

$form_state['input']['name']

но я понимаю, что вышесказанное дает мне необработанные, неанимированные данные $ _POST.

Мне нужно введенное пользователем значение, как я могу получить это? Мне действительно неясно, как получить пользовательские данные с помощью API форм drupal.

Спасибо за любую помощь!

1 Ответ

9 голосов
/ 01 ноября 2011

Это потому, что вы используете #value вместо #default_value для текстового поля. Использование первого всегда перезапишет значение, предоставленное пользователем. Вам просто нужно изменить свой код на это:

function sample_form($form, &$form_state){
  $form['sample']['name'] = array(
    '#description' => 'Name',
    '#default_value' => 'Name', // <-- Change made here
    '#type' => 'textfield',
  );

  $form['sample']['sample_submit'] = array(
    '#type' => 'submit',
    '#value' => 'SUBMIT',
    '#submit' => array('sample_form_submit')
  );
}

Это верно только для элементов, которые фактически принимают введенное значение. Например, #value по-прежнему является правильным ключом для использования для скрытых входов, кнопок отправки и т. Д. Для выбора списков, флажков и т. Д. Также необходимо будет использовать #default_value, иначе вы никогда не получите данные, отправленные пользователем.

Проверьте Drupal FAPI для справки, если вы его еще не видели.

...