【问题标题】:Populate Webform hidden field with title of referring node使用引用节点的标题填充 Webform 隐藏字段
【发布时间】:2011-12-14 13:41:54
【问题描述】:

Drupal 7 我遇到了与之前提出的问题类似的问题,但到目前为止,我无法提出任何建议。 我有内容类型为“软件产品”的“产品”页面。我想在产品页面上放置一个指向 Web 表单“请求信息”的链接我想在表单上填充一个(隐藏)字段,其中产品名称也是引用产品页面的标​​题。 我尝试了以下方法,但这只会导致显示表单的标题 - 而不是引用页面。

<?php  
/** 
*  Implementation of hook_form_alter(). 
*/  
function AddNodeInfoToForm_form_alter(&$form, $form_state, $form_id) {  
  switch($form_id) {  
       case 'webform_client_form_10': // the id of the form  
               {$current_object = menu_get_object(); 
               $product_title = $current_object->title; 
               $form['submitted']['product']['#default_value'] = $product_title; }
           return $form;
       }

} 我将不胜感激 - 我是 Drupal 的新手

【问题讨论】:

    标签: drupal-7 drupal-webform hook-form-alter


    【解决方案1】:

    这是一种非常混乱的方式来做你需要做的事情,你应该将产品 nid 作为产品页面链接中查询字符串的一部分放在 URL 中,然后从网络表单加载它。

    在您的节点模板/预处理中:

    $webform_path = 'node/10'; // Or whatever the webform's nid is
    $link = l('Request Information', $webform_path, array(
      'query' => array(
        'product_nid' => $product_node->nid
      )
    ));
    echo $link;
    

    然后以你的形式改变:

    function AddNodeInfoToForm_form_alter(&$form, $form_state, $form_id) {  
      if ($form_id == 'webform_client_form_10' && isset($_GET['product_nid']) && is_numeric($_GET['product_nid'])) {
        $product_node = node_load($_GET['product_nid']);
        if ($product_node) {
          $product_title = $product_node->title; 
          $form['submitted']['product']['#default_value'] = $product_title;
        }
      }
    }
    

    请注意,您不会从 hook_form_alter 函数返回表单,$form 变量是通过引用传递的,因此更改会以这种方式存储。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      相关资源
      最近更新 更多