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

Php 如何在自定义表单处理程序中访问表单,php,drupal,open-source,content-management-system,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\u additional\u submit\u

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

function my_module_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'my_form') {
    $form['#submit'][] = 'my_additional_submit_handler';
  }
}
当然,我定义了自己的处理程序
my\u additional\u submit\u handler

function my_additional_submit_handler(){

}

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

您尝试过这种方法吗?它应按预期工作:

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
}

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

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
}

您是否在
$form_state['values']['fieldName']
中查找数据?此外,正如iKid在其代码示例中所述,在处理程序函数中需要args
$form和$form\u state

您是否在
$form\u state['values']['fieldName']
中查找数据?此外,正如iKid在其代码示例中所述,在处理程序函数中需要args
$form和$form\u state

您是否尝试清除缓存?您的函数在没有参数的情况下工作吗?我刚读到这篇文章,也许你也可以试试这里的方法,这应该行得通。如果没有,而且因为dsm(“字符串”)也不起作用,我怀疑您根本没有改变表单。在钩子表单更改中检查$form\u id。是否尝试清除缓存?您的函数在没有参数的情况下工作吗?我刚读到这篇文章,也许你也可以试试这里的方法,这应该行得通。如果没有,而且因为dsm(“字符串”)也不起作用,我怀疑您根本没有改变表单。在钩子表单更改中检查$form\u id。