J'essaie d'utiliser le filtre à jetons par programme dans un fichier .theme comme ça.
function mytheme_preprocess_block(&$vars){
$token = Drupal::token();
$vars['label'] = $token->replace('[node:title]');
}
J'ai regardé https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Utility%21Token.php/function/Token%3A%3Areplace/8.2.x pour information. Cependant, lorsque je génère $ vars ['label'], tout ce qu'il produit est [node: title] comme si aucun remplacement ne s'était produit. Comment initier par programme le filtre de jetons?
MISE À JOUR: En tant que test, j'ai essayé d'utiliser une autre méthode de jeton pour m'assurer que tout se passait en utilisant $token->scan('[node:title]');
et cela a craché
array (1) {["node"] => array (1) {["title"] => string (12) "[node: title]"}}
Je sais donc que j'ai correctement invoqué la classe de jetons
MISE À JOUR: Il semble que le remplacement de jeton fonctionnait, il n'a tout simplement pas reconnu [node: title]. L'utilisation de [site: nom] a produit le résultat attendu. Comment pourrais-je faire fonctionner [node: title]? Dois-je lui fournir ces données?
Les données sur le nœud devaient être fournies en tant que paramètre à la méthode de remplacement. Cela a fonctionné une fois que j'ai utilisé
$node = \Drupal::routeMatch()->getParameter('node');
$vars['label'] = $token->replace($vars['label'],['node' => $node]);