使用引用节点的标题填充Webform隐藏字段

时间:2011-12-14 13:41:54

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

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

<?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的新手

1 个答案:

答案 0 :(得分:1)

执行您需要的操作非常混乱,您应该将产品nid放在URL中,作为产品页面链接中查询字符串的一部分,然后从webform中加载它。

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

$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变量通过引用传入,因此更改以这种方式存储。