如何修改令牌的值? (有关详细信息,请参见下文。)
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.
}
答案 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;
}
}
}
}