2012-02-10 2 views
1

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

Для этого я создал собственный модуль (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!')); 
} 

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

ответ

2

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

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

или, вы можете проверить $ форма аргумента в представить обратного вызова в аналогичным образом.

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

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

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

+0

Это не вопрос. – doublejosh

Смежные вопросы