1

トークンの値を変更するにはどうすればよいですか? (詳細については、以下を参照してください。)

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 の管理者設定にテキストがある場合。例 [submission:values:total_points]
  • $replacements['[submission:values:total_points]'] = my_value; を実行します。
  • webform2pdf は、[submission:values:total_points] の値 (つまり、my_value) を確認して、生成された pdf に挿入します。
  • フォーラムで質問したり、インターネットでググったりできることに気づきました。一日の終わりには、コードを掘り下げて理解する必要があります。
4

1 に答える 1

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;
      }
    }
  }
}
于 2012-12-21T10:05:37.507 に答える