Получение измененных значений формы в drupal - PullRequest
1 голос
/ 28 апреля 2010

Я создал один модуль в имени drupal как newmodule. Я использую форму alter, чтобы изменить форму регистрации пользователя для добавления одного местоположения поля. Когда я отправляю форму, как я могу получить значение нового поля, которое я создал.

Ответы [ 3 ]

2 голосов
/ 28 апреля 2010

Для уточнения предыдущих ответов, где-то в вашей функции hook_form_alter, вы хотите указать форме запускать собственный обработчик #submit, например ::

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  $form['new_field'] = array( ... ); // You already did this, right?
  $form['#submit'][] = 'mymodule_submit_handler'; // Add this
}

Примечание: вы должны добавлять сюда #submit, а не заменять его. Затем в вашем обработчике отправки вы можете легко получить значение, например ::10000

function mymodule_submit_handler($form, &$form_state) {
  $value = $form_state['values']['new_field'];
}
2 голосов
/ 28 апреля 2010

Значение формы хранится в

$form_state['values']['field_name']

По умолчанию. Если вы установите #tree в TRUE, это поведение изменится, и значения будут находиться во вложенном массиве, а не в плоском.

Будут вызваны два типа функций, где у вас есть доступ к переменной $form_state.

  1. Функции проверки используются для проверки данных формы, чтобы проверить, являются ли введенные пользователем данные приемлемыми, например, действительный адрес электронной почты и т. Д. Чтобы добавить функцию проверки, добавьте ее в реализацию изменения формы:

    $form['#validate'][] = 'name_of_your_validate_handler';
    
  2. Функции отправки используются для обработки формы с действительными данными. Обычно вы вставляете данные в базу данных, устанавливаете перенаправления и тому подобное, чтобы добавить функцию отправки, добавьте ее в реализацию изменения формы:

    $form['#submit'][] = 'name_of_your_submit_handler';
    

Функции проверки и отправки принимают одинаковые аргументы:

function validate_or_submit_func(&$form, &$form_state) {
  // $form is the form array created by drupal_get_form
  // $form_state contains valuable info like, the submitted values and other options.
}
0 голосов
/ 28 апреля 2010

Новый модуль также нуждается в вызове ловушки _submit, чтобы вы могли вывести значения $ form и $ form_state, чтобы вы могли их видеть.

...