我用drupal名称创建了一个模块作为newmodule。我使用form alter来改变用户注册表单以添加一个字段位置。当我提交表单时,我如何获得我创建的新字段的值。
答案 0 :(得分: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.
}
答案 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值,这样你就可以看到它们。