Изменить данные формы после отправки в drupal - PullRequest
1 голос
/ 11 февраля 2012

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

Для этого я создал пользовательский модуль (my_module.module):

function my_module_form_alter(&$form, &$form_state) {
    // ...
    $form['#submit'][] = 'my_module_form_alter_submit';
}

function my_module_form_alter_submit($form_id, $form_values) {
    drupal_set_message(t('Submit Function Executed!'));
}

Как мне сказать этот модульссылаться только на форму определенного типа содержимого?И как я могу удалить данные, когда они представлены?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2012

Предполагая, что вы изменяете форму редактирования узла, вы можете либо условно добавить обратный вызов submit, например (в вашем hook_form_alter):

if(isset($form['#node']) && $form['type']['#value'] == 'page') {
    $form['#submit'][] = 'my_module_form_alter_submit';
}

или вы можете проверить аргумент $ form в обратном вызове submit аналогичным образом.

Вам не хватает третьего аргумента hook_form_alter, который должен быть $ form_id, и ваш обратный вызов submit должен принимать такие аргументы, как:

function my_module_form_alter_submit($form, &$form_state) { ... }

Смотри также:

http://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/hook_form_alter/6

http://api.drupal.org/api/drupal/developer%21topics%21forms_api.html/6

0 голосов
/ 11 февраля 2012

Чтобы удалить данные после отправки, в вашей функции form_alter просто используйте unset () в поле формы. unset($form['my-field']);

...