web-dev-qa-db-fra.com

Comment obtenir la valeur / URL d'un champ Lien dans un modèle Twig?

J'ai un type de bloc personnalisé avec un champ Lien appelé "field_link" (pour les liens internes uniquement). Dans mon bloc Twig template je veux extraire l'URL du champ de lien. Comment puis-je faire? J'ai lu un article avec des problèmes similaires, mais aucune des solutions ne semble fonctionner jusqu'à présent.

Ce que j'ai essayé jusqu'à présent:

{{ file_url(content.field_link.uri) }}
{{ file_url(content.field_link.0.url) }}

Je reçois seulement "/" mais il devrait y avoir "/ node/1" ...

Voici mon modèle de bloc standard:

<div{{ attributes.addClass(classes) }}>   
      {{ title_prefix }}
      {% if label %}
        <h2{{ title_attributes }}>{{ label }}</h2>
      {% endif %}
      {{ title_suffix }}
      {% block content %}
        {{ content }}
      {% endblock %}
</div>
1
scar

Je ne suis pas sûr que vous ayez besoin d'utiliser file_url (), mais vous pouvez utiliser {{ content.field_link.0['#url'] }} comme décrit dans cette question sur stackoverflow.

1
joekers

Ce code fonctionnera correctement pour imprimer des URL et Title séparés du champ de lien dans twig.

{{ content.field_link[0]['#url'] }}

{{ content.field_link[0]['#title'] }}
0
Anoop Singh

Vous pouvez obtenir l'URL et la valeur (texte) de cette façon:

{{ content.field_link.0['#url'] }}

{{ content.field_link.0['#title'] }}
0
Efraín Herrera

Dans la plupart des modèles (nœud, paragraphe, ...), vous pouvez accéder aux valeurs de champ brutes à l'aide de
{{ entity_type.field_name.0.value }}. Malheureusement, cela ne fonctionne pas avec les modèles de blocs. Pour le faire fonctionner pour les blocs de contenu personnalisés, vous devez ajouter une fonction de prétraitement:

function YOURTHEME_preprocess_block(array &$variables) {
  if ($variables['base_plugin_id'] == 'block_content') {
    $variables['block_content'] = $variables['elements']['content']['#block_content'];
  }
}

Vous pouvez maintenant accéder à vos champs à l'aide de {{ block_content.field_name.0.value }} (en cas de champs de lien, utilisez {{ block_content.field_name.0.url }}comme décrit ici )

0
Hudri