如何修改令牌的值?

时间:2012-12-21 07:42:36

标签: drupal-7 drupal-webform

如何修改令牌的值? (有关详细信息,请参见下文。)

function hook_webform_submission_insert($node, $submission) {
  // Total_points is a hidden input tag in a web form and initially set as 0.
  // Total points will be calculated here, and assigned to total_points.
  // $total_points = token_replace('[submission:values:total_points]', array("webform-submission" => $submission));

  // How do I modify a token value? e.g.
  $the_token = &drupal_get_token($name_of_token = '[submission:values:total_points]');
  $the_token = "100" // Assign 100 points.
}

  • 在理解了代码流之后,我解决了这个问题。
  • 我尝试做的是在webform中替换隐藏变量,然后使用webform2pdf。
  • 如果您在webform2pdf的管理设置中有一些文字。例如[提交内容:值:total_points]
  • Do $ replacementments ['[submission:values:total_points]'] = my_value;
  • webform2pdf将在生成的pdf中查看并插入[submission:values:total_points](即my_value)的值。
  • 我意识到我可以在论坛上提问并谷歌上网。在一天结束时,我仍然需要深入研究代码并理解它。

1 个答案:

答案 0 :(得分:3)

首先,drupal_get_token()用于生成防止跨站点请求伪造的值。它通常在创建链接时使用,例如overlay_disable_message()所做的。

      'query' => drupal_get_destination() + array(
        // Add a token to protect against cross-site request forgeries.
        'token' => drupal_get_token('overlay'),
      ),

要更改像[submission:values:total_points]这样的标记,模块需要实现hook_tokens_alter()webform_tokens()使用的代码可以指导您编写的代码。

function mymodule_tokens_alter(array &$replacements, array $context) {
  if ($context['type'] == 'submission' && !empty($context['data']['webform-submission'])) {
    // $submission = $context['data']['webform-submission'];
    // $node = $context['data']['node'] ? $context['data']['node'] : node_load($submission->nid);

    // Find any token starting with submission:values.
    if ($value_tokens = token_find_with_prefix($context['tokens'], 'values')) {
      if (!empty($value_tokens['total_points'])) {
        $replacements[$value_tokens['total_points']] = 100;
      }
    }
  }
}