1

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

4

3 回答 3

2

表单值存储在

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

默认情况下。如果您设置#treeTRUE这种行为将会改变,并且值将在嵌套数组而不是平面数组中。

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

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

    $form['#validate'][] = 'name_of_your_validate_handler';
    
  2. 提交函数用于对具有有效数据的表单进行操作。通常,您将数据插入数据库,在此处设置重定向等,以添加提交功能,将其添加到您的表单更改实现中:

    $form['#submit'][] = 'name_of_your_submit_handler';
    

验证和提交函数都采用相同的参数:

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.
}
于 2010-04-28T13:28:54.093 回答
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'];
}
于 2010-04-28T13:58:28.823 回答
0

新模块还需要调用 _submit 挂钩,以便您可以转储 $form 和 $form_state 值以便查看它们。

于 2010-04-28T13:35:04.547 回答