我创建了一个名为 newmodule 的 drupal 模块。我使用表单更改来更改用户注册表单以添加一个字段位置。当我提交表单时,我如何获得我创建的新字段的值。
问问题
4885 次
3 回答
2
表单值存储在
$form_state['values']['field_name']
默认情况下。如果您设置#tree
为TRUE
这种行为将会改变,并且值将在嵌套数组而不是平面数组中。
将调用两种类型的函数,您可以在其中访问$form_state
变量。
验证函数用于验证表单数据,以检查用户输入的数据是否可接受,例如有效的电子邮件地址等。要添加验证函数,请在表单更改实现中添加:
$form['#validate'][] = 'name_of_your_validate_handler';
提交函数用于对具有有效数据的表单进行操作。通常,您将数据插入数据库,在此处设置重定向等,以添加提交功能,将其添加到您的表单更改实现中:
$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 回答