Получение измененных значений формы в 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
переменная.
Функции проверки используются для проверки данных формы, чтобы проверить, являются ли введенные пользователем данные приемлемыми, например, действительный адрес электронной почты и т. Д. Чтобы добавить функцию проверки, добавьте ее в реализацию изменения формы:
$form['#validate'][] = 'name_of_your_validate_handler';
Функции отправки используются для обработки формы с действительными данными. Обычно вы вставляете данные в базу данных, устанавливаете перенаправления и так далее, чтобы добавить функцию отправки, добавьте ее в реализацию изменения формы:
$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, чтобы вы могли их видеть.