在某些内容类型表单中,我添加了一个复选框。选中此复选框后,我想删除一些提交的数据。
为此,我创建了一个自定义模块(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!'));
}
我怎么能告诉这个模块只能引用某种包含类型的形式?如何在提交数据时删除数据?
答案 0 :(得分:2)
假设您正在更改节点编辑表单,您可以有条件地添加提交回调,例如(在您的hook_form_alter中):
if(isset($form['#node']) && $form['type']['#value'] == 'page') {
$form['#submit'][] = 'my_module_form_alter_submit';
}
或者,您可以以类似的方式检查提交回调中的$ form参数。
你缺少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
答案 1 :(得分:-1)
要在提交后删除数据,请在form_alter函数中,在表单字段上使用unset()。 unset($form['my-field']);