2012-12-21 3 views
0

토큰의 값을 어떻게 수정합니까? (자세한 내용은 아래를 참조하십시오.)토큰의 값을 어떻게 수정합니까?

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 $ replacements [ '[제출 : 값 : total_points]'] = my_value;
  • webform2pdf는 생성 된 pdf에 [submission : values ​​: total_points] (즉, my_value)의 값을보고 삽입합니다.
  • 나는 포럼과 구글에 인터넷을 요청할 수 있다는 것을 알고있다. 하루가 끝나면 코드를 파헤쳐 이해해야합니다.

답변

3

우선 오프 사이트 인 drupal_get_token()은 사이트 간 요청 위조로부터 보호하는 값을 생성하는 데 사용됩니다. 일반적으로 링크를 만들 때 사용됩니다 (예 : overlay_disable_message()). [: 값 : total_points 제출, 모듈이 hook_tokens_alter()를 구현해야

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

같은 토큰을 변경합니다. 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; 
     } 
    } 
    } 
}