Получение измененных значений формы в drupal

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

3 ответа

Решение

Чтобы уточнить предыдущие ответы, где-нибудь в вашей функции 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, а не заменять его. Затем в вашем обработчике отправки вы можете легко получить значение, например:

function mymodule_submit_handler($form, &$form_state) {
  $value = $form_state['values']['new_field'];
}

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

$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.
}

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

Другие вопросы по тегам