代码之家  ›  专栏  ›  技术社区  ›  Shoaib Nawaz

带有附加参数的表单提交处理程序

  •  7
  • Shoaib Nawaz  · 技术社区  · 14 年前

    对于某些要求,我需要将其他信息传递给表单提交处理程序。在窗体api中,将自定义提交处理程序定义为

    $additional_args = array();
    $form['#submit'][] = 'my_submit_handler'
    

    function my_submit_handler($form, &$form_state, $additional_args){
    
    3 回复  |  直到 14 年前
        1
  •  14
  •   Michiel    13 年前

    $form ,或 $form_state

    • 在窗体中添加了一个字段,键入value以存储该值。如果表单定义中有值,请不要这样做。

      $form['store'] = array(
        '#type' => 'value',
        '#value' => $value
      );
      

      $form_state['values']['store'] .

    • $form_state['storage'] ,如果要将验证句柄中的变量传输到提交处理程序,则完成:

      // Validation.
      $form_state['storage']['value'] = $value;
      
      ...
      
      // Submit
      $value = $form_state['storage']['value'];
      // Need to unset stored values when not used anymore.
      unset($form_state['storage']['value']);
      
        2
  •  9
  •   andrewsi Laxman Battini    12 年前

    这是用英语说的 http://api.drupal.org/api/drupal/includes!form.inc/function/drupal_get_form/7

    前任:

    hook_form($form, &$form_state, $myAdditionnalArg) {...}
    

    然后在

    hook_form_submit($form, &$form_state) {
    

    ... //$form_state['build_info']['args'] 是在索引0处包含参数值的数组 $myAdditionnalArg ...

        3
  •  4
  •   avpaderno    13 年前

    $form['#submit'] and $form['#validate'] and $form['#process'] no longer support custom parameters ,将参数传递给提交处理程序集的建议方法是使用类似于以下代码的代码:

    $form['#first_paramater'] = $value;
    $form['#submit'][] = 'my_submit_handler';
    

    处理程序将检索值 $form['#first_paramater'] . 注意到,而不是 #first_paramater # .

    通常不需要像代码那样设置提交处理程序,但是在某些情况下,有必要更改由另一个模块创建的表单,或者为表单中的每个提交按钮设置不同的提交处理程序。

    drupal_retrieve_form() 保存传递给表单生成处理程序的参数 $form['#parameters'] 其中包括:

    • $form_id
    • $form_state
    • 传递给窗体生成器的参数
    推荐文章