【问题标题】:Change form data after submit in drupal在drupal中提交后更改表单数据
【发布时间】:2012-03-03 08:35:44
【问题描述】:

在某些内容类型表单中,我添加了一个复选框。选中此复选框后,我想删除一些提交的数据。

为此,我创建了一个自定义模块 (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!'));
}

我怎样才能告诉这个模块只引用某种包含类型的形式?提交后如何删除数据?

【问题讨论】:

    标签: drupal drupal-6 drupal-modules


    【解决方案1】:

    假设您正在更改节点编辑表单,您可以有条件地添加提交回调,例如(在您的 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

    【讨论】:

      【解决方案2】:

      要在提交后删除数据,在您的 form_alter 函数中,只需在表单字段上使用 unset()。 unset($form['my-field']);

      【讨论】:

        猜你喜欢
        • 2015-02-18
        • 1970-01-01
        • 1970-01-01
        • 2017-04-09
        • 1970-01-01
        • 2019-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多