Для некоторых требований мне нужно передать дополнительную информацию в обработчик отправки формы. В форме api, определяя пользовательский обработчик отправки как
$additional_args = array();
$form['#submit'][] = 'my_submit_handler'
, я ожидаю отправить обработчик как
function my_submit_handler($form, &$form_state, $additional_args){
Обработчик отправки вызывается fapi drupal, поэтому вы не можете сделать что-то подобное. Вместо этого вы можете добавить то, что вам нужно, либо в $ form
, либо в $ form_state
. Обычные подходы заключаются в следующем:
Добавлено поле в форму, введите значение для хранения значения. Не делайте этого, если у вас есть значение в определении формы.
$ form ['store'] = массив (
'#type' => 'значение',
'#value' => $ значение
);
Это будет доступно в $ form_state ['values'] ['store']
.
Добавьте значение в $ form_state ['storage']
, сделано, если вы изменяете в дескрипторе проверки, который хотите передать обработчику отправки:
// Проверка.
$ form_state ['хранилище'] ['значение'] = $ значение;
...
// Представлять на рассмотрение
$ значение = $ form_state ['хранилище'] ['значение'];
// Необходимо сбросить сохраненные значения, когда они больше не используются.
unset ($ form_state ['хранилище'] ['значение']);
Как указано в $ form ['# submit'] и $ form ['# validate'] и $ form ['# process'] больше не поддерживают специальные параметры , предлагаемый способ передачи параметров в набор обработчиков отправки, как в показанном коде, заключается в использовании кода, подобного следующему:
$form['#first_paramater'] = $value;
$form['#submit'][] = 'my_submit_handler';
Обработчик извлекает значение как $ form ['# first_paramater']
.
Обратите внимание, что вместо #first_paramater
в коде может использоваться другая строка, но она должна начинаться с #
.
Обычно нет необходимости устанавливать обработчик отправки, как в коде, но в некоторых случаях это необходимо, например, изменить форму, созданную другим модулем, или установить другой обработчик отправки для каждой из кнопок отправки. присутствует в форме.
drupal_retrieve_form () сохраняет параметры, переданные обработчику сборки формы в $ form ['# parameters']
, который содержит:
$ form_id
$ form_state