在drupal中获取更改的表单值

时间:2010-04-28 13:22:10

标签: php drupal drupal-6 drupal-fapi drupal-alter

我用drupal名称创建了一个模块作为newmodule。我使用form alter来改变用户注册表单以添加一个字段位置。当我提交表单时,我如何获得我创建的新字段的值。

3 个答案:

答案 0 :(得分:2)

表单值存储在

$form_state['values']['field_name']

默认情况下。如果将#tree设置为TRUE,则此行为将发生更改,并且值将采用嵌套数组而非平面数组。

将调用两种类型的函数,您可以访问$form_state变量。

  1. 验证函数用于验证表单数据,检查用户输入的数据是否可接受,如有效的电子邮件地址等。要添加验证功能,请在表单中添加以下更改实现:

    $form['#validate'][] = 'name_of_your_validate_handler';
    
  2. 提交函数用于处理包含有效数据的表单。通常,您将数据插入数据库,设置重定向等,在此处添加一个提交函数,在您的表单中添加以下实现:

    $form['#submit'][] = 'name_of_your_submit_handler';
    
  3. 验证和提交功能都采用相同的参数:

    function validate_or_submit_func(&$form, &$form_state) {
      // $form is the form array created by drupal_get_form
      // $form_state contains valuable info like, the submitted values and other options.
    }
    

答案 1 :(得分:2)

要详细说明以前的答案,在hook_form_alter函数的某个地方,你想告诉表单运行你自己的#submit处理程序,例如:

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  $form['new_field'] = array( ... ); // You already did this, right?
  $form['#submit'][] = 'mymodule_submit_handler'; // Add this
}

注意:您应该在此处附加#submit,而不是替换它。然后在提交处理程序中,您可以轻松获取值,例如:

function mymodule_submit_handler($form, &$form_state) {
  $value = $form_state['values']['new_field'];
}

答案 2 :(得分:0)

新模块还需要调用_submit钩子,这样你就可以转出$ form和$ form_state值,这样你就可以看到它们。