web-dev-qa-db-fra.com

Comment ajouter une variable à un modèle de champ twig?

Sur une page de noeud, je voudrais ajouter le titre du noeud à la sortie à côté d'un autre autre champ (le champ d'exemple).

J'ai créé un nouveau field--field-example.html.twig mais je ne parviens pas à accéder à la variable de titre du nœud car elle n'est pas disponible dans le modèle de champ.

J'ai besoin d'ajouter les variables dans le prétraitement du thème: themename.theme.

Comment ajouter la variable dans themename.theme et quelle serait l'entrée correspondante dans le field--field-example.html.twig?

9
Taylor Taff

Puisque vous avez demandé de passer le titre du nœud en tant que variable via le fichier .theme, vous pouvez utiliser template_preprocess_field pour faire quelque chose comme ceci:

  function themename_preprocess_field(&$variables, $hook) {
    if ($variables['element']['#field_name'] == 'field_example') {
      $variables['node_title'] = $variables['element']['#object']->getTitle();
    }
  }

puis dans votre field--field-example.html.twig vous pouvez simplement utiliser {{node_title}} pour afficher le titre du nœud.

Voir également la réponse de 4k4 ci-dessous.

15
Janey

Un objet nœud est disponible dans les variables du modèle de champ, vous n'avez donc pas besoin d'une fonction de prétraitement.

Pour obtenir le titre du nœud dans un modèle de champ:

{{ element['#object'].label }}
11
4k4