如何在自定义表单处理程序中访问表单

时间:2010-08-25 03:05:01

标签: php drupal open-source content-management-system

我正在使用以下逻辑将自定义处理程序添加到由另一个模块定义的表单中。我正在尝试对表单数据进行额外处理。

function my_module_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'my_form') {
    $form['#submit'][] = 'my_additional_submit_handler';
  }
}

当然,我定义了一个名为my_additional_submit_handler

的自己的处理程序
function my_additional_submit_handler(){

}

但是如何将表单及其值传递给我的自定义处理程序?我尝试传递& $ form,但无法使用dsm在自定义处理程序中访问它。是否有一种特殊的语法来传递自定义表单处理程序的参数?

2 个答案:

答案 0 :(得分:3)

你试过这个吗?它应该按预期工作:

function mymodule_form_alter(&$form, $form_state, $form_id) {  
  if($form_id=="your_form"){
    $form['#submit'][] = 'mymodule_form_mysubmit';
  }
}

function mymodule_form_mysubmit($form, &$form_state){
    // $form is your entire form object
    // $form_state should be your submitted data
}

答案 1 :(得分:2)

您在寻找$form_state['values']['fieldName']中的数据吗?另外,正如Kid在他的代码示例中提到的那样,你需要在处理函数中使用args $form and $form_state