2010-08-25 46 views
1

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

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的自定义处理程序中访问它。是否有一个特殊的语法来传递自定义表单处理函数的参数?

回答

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 
} 
+0

您是否尝试清除缓存?没有参数,你的功能是否工作? 此外,我只是读了这个,也许你可以尝试在这里的做法 http://drupal.org/node/144132#custom-params – w00d 2010-08-25 06:37:47

+0

这应该工作。如果没有,并且由于dsm(“字符串”)也不起作用,我怀疑你并没有改变表单。在你的hook_form_alter中检查你的$ form_id。 – 2010-08-25 08:30:07

2

您是否正在寻找$form_state['values']['fieldName']的数据?另外,由于iKid在他的代码示例中使用了大量代码,所以您需要在处理函数中使用参数$form and $form_state