2011-12-14 6 views
1

Drupal 7 これまでに提示されている問題と同様の問題が発生していますが、これまで何も提案できませんでした。 コンテンツタイプ 'ソフトウェア製品'の '商品'ページがあります。 Webformの「リクエスト情報」を指し示す製品ページにリンクを貼りたいフォーム上の(隠れた)フィールドに、参照する製品ページのタイトルでもある製品名を入力したいとします。 私は以下を試しましたが、これはフォームのタイトルが表示されているだけで、参照ページではありません。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; 
     } 

} 私は、任意のポインタをいただければ幸いです - 私はあなたが、あなただけの一部としてURLにNID製品を置く必要がありますする必要が何をしてはかなり厄介な方法ラウンドですDrupalの

答えて

1

に新たなんですあなたの製品ページのリンクにあるクエリ文字列を読み込み、Webフォームから読み込んでください。あなたのノードテンプレート/前処理で

$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; 

その後、フォームに変更する:あなたはhook_form_alter機能からフォームを返さない

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; 
    } 
    } 
} 

注意、$form変数が渡されたが変更がそのように格納されるように参照することができます。

関連する問題