it-swarm.com.de

Verwenden Sie programmgesteuert den Token-Filter

Ich versuche, den Token-Filter programmgesteuert in einer .theme-Datei wie dieser zu verwenden.

function mytheme_preprocess_block(&$vars){
  $token = Drupal::token();
  $vars['label'] = $token->replace('[node:title]');
}

Ich habe mir https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Utility%21Token.php/function/Token%3A%3Areplace/8.2.x für angesehen Information. Wenn ich jedoch $ vars ['label'] ausgebe, wird nur [node: title] erzeugt, als ob überhaupt keine Ersetzung stattgefunden hätte. Wie würde ich den Token-Filter programmgesteuert initiieren?

UPDATE: Als Test habe ich versucht, mit $token->scan('[node:title]'); eine andere Token-Methode zu verwenden, um sicherzustellen, dass überhaupt etwas passiert, und es wurde ausgespuckt

array (1) {["Knoten"] => Array (1) {["Titel"] => Zeichenfolge (12) "[Knoten: Titel]"}}

Ich weiß also, dass ich die Token-Klasse zumindest richtig aufgerufen habe

UPDATE: Es scheint, dass das Ersetzen des Tokens funktioniert hat und es [Knoten: Titel] einfach nicht erkannt hat. Die Verwendung von [site: name] führte zu dem erwarteten Ergebnis. Wie könnte ich [node: title] zum Laufen bringen? Muss ich es mit diesen Daten versorgen?

3
Matt

Daten über den Knoten mussten als Parameter für die Ersetzungsmethode angegeben werden. Es hat funktioniert, als ich es benutzt habe

$node = \Drupal::routeMatch()->getParameter('node');
$vars['label'] = $token->replace($vars['label'],['node' => $node]);
3
Matt