【问题标题】:How to access a form in a custom form handler如何在自定义表单处理程序中访问表单
【发布时间】:2010-08-25 03:05:01
【问题描述】:

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

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 在自定义处理程序中访问它。是否有特殊的语法可以通过自定义表单处理程序传入参数?

【问题讨论】:

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


    【解决方案1】:

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

    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
    }
    

    【讨论】:

    • 你试过清除缓存吗?你的函数在没有参数的情况下工作吗?我也刚读到这个,也许你也可以试试这里的方法drupal.org/node/144132#custom-params
    • 这应该可以。如果没有,并且因为 dsm("string") 也不起作用,我怀疑您根本没有更改表单。在 hook_form_alter 中检查您的 $form_id。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      相关资源
      最近更新 更多