簡體   English   中英

將變量從一頁傳遞到Drupal中的Web窗體

[英]Pass variables from one page to a webform in drupal

我正在嘗試將一個變量從不同的產品頁面傳遞到Webform頁面。 每個產品頁面都有一個會話變量,例如$_SESSION["product_name"] = "Product1"; 同樣,其他產品頁面具有$_SESSION["product_name"] = "Product2"; $_SESSION["product_name"] = "Product3";

我的問題是如何將這些變量傳遞到另一個Webform頁面。 我正在使用“ webform”模塊,我想完成的是應該有一個<select>標記,並且有類似的選項

<select>
  <option value="<?php echo $_SESSION["product_name"]; ?>" selected><? php echo $_SESSION["product_name"]; ?></option>
  <option value="Product2">Product2</option>
  <option value="Product3">Product3</option>
  <option value="Product4">Product4</option>
</select>

問題是我沒有地方可以放置這些代碼,是否可以解決此問題,或者可以使用任何模塊解決此問題?

您可以創建一個自定義模塊,然后實現hook_form__alter()

您將需要找到要定位的網絡表單的ID。

然后:

function mymodule_form_webform1_alter(&$form, &$form_state) {
    array_unshift($form['products']['#options'], array($_SESSION["product_name"] => $_SESSION["product_name"]));
}

或類似

這可能是將會話值傳遞到Webform選項默認值的一種方法。 我正在使用Drupal 7,Webform4。不同產品頁面上的會話值為:

$_SESSION["j_product_name"] = "haha1";
$_SESSION["j_product_name"] = "haha2";

首先,我創建了一個自定義模塊,.module部分是(也需要創建.info):

<?php
function jay_tokens_token_info() {
  $types['jay_token'] = array(
    'name' => t("Jay Tokens"),
    'description' => t("Jay custom tokens"),
  );


  $jay_token['product_session'] = array(
    'name' => t("Product Name"),
    'description' => t("product_name session value"),
  );


  return array(
    'types' => $types,
    'tokens' => array(
      'jay_token' => $jay_token,
    ),
  );
}

/**
 * Implements hook_tokens().
 */
function jay_tokens_tokens($type, $tokens, array $data = array(), array $options = array()) {

  $replacements = array();

  if ($type == 'jay_token') {
    foreach ($tokens as $name => $original) {
      switch ($name) {
        case 'product_session':
          $replacements[$original] = $_SESSION["j_product_name"];
        break;

      }
    }
  }

  return $replacements;
}
?>

在網絡表單選擇選項中,默認值應為[jay_token:product_session] ,選項應為:

haha1|Product1
haha2|Product2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM