Заполните скрытое поле веб-формы заголовком ссылающегося узла - PullRequest
1 голос
/ 14 декабря 2011

Drupal 7 У меня проблема, аналогичная той, которая была представлена ​​ранее, но до сих пор я не смог заставить ни одно из предложений работать. У меня есть страницы «Продукт» с типом контента «Программные продукты». Я хочу разместить на страницах продукта ссылку, указывающую на «Запрос информации» веб-формы. Я хочу заполнить (скрытое) поле формы названием продукта, которое также является заголовком ссылающейся страницы продукта. Я пробовал следующее, но это просто приводит к отображению заголовка формы, а не к странице ссылки.

<?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 Ответ

1 голос
/ 14 декабря 2011

Это довольно грязный способ сделать то, что вам нужно, вы просто должны указать 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 передается по ссылке, поэтому изменения сохраняются таким образом.

...