Je veux utiliser le chemin de base dans un fichier de modèle Drupal 8. J'ai essayé ce qui suit, mais je n'obtiens pas le résultat correct.
{{ app.request.baseUrl }}
{{base_path}}
Ce dont j'ai besoin, c'est du chemin absolu vers le nœud {{ app.request.baseUrl }}/{{ url }}
.
Une solution que j'ai trouvée consiste à mettre ce code dans un crochet de prétraitement et à le passer au thème.
$host = \Drupal::request()->getHost();
$response = \Drupal::httpClient()
Je cherche une meilleure solution. Que dois-je utiliser au lieu de celui que j'utilise?
path()
fonction peut être appliquée pour récupérer la route du nœud:{{ path('entity.node.canonical', {'node': node.id}) }}
Vous n'avez presque jamais besoin de créer explicitement des chemins à partir de parties dans Drupal 8. J'irais avec quelque chose comme ceci:
la source
toString
mais notant show, puis j'ai essayé kint (url) et j'ai vu que c'était objet.En
page.html.twig
vous aurez une{{ base_path }}
variable de travail . Pourquoi il n'est pas disponible dans tous les modèles, je n'en ai aucune idée. Comme je pense que cela devrait être et tout le reste semble désordonné, ma solution préférée est de faire exactement comme Drupal le fait dans la fonction de page de prétraitement pour tout endroit où j'en ai besoin.Pour mettre à
{{ base_path }}
disposition des modèles de bloc dans un thème nommé exemple, ajoutez ce code auexample.theme
fichier:Comme indiqué dans la réponse acceptée fournie par MPD, si vous obtenez l'URL d'un nœud ou d'une autre entité, il existe des méthodes pour tout faire pour vous.
Cependant, il existe des raisons pour obtenir le chemin_base, par exemple lors de l'affichage d'images qui vivent dans votre dossier de thème.
{{ directory }}
fournit le chemin vers le dossier du thème, mais il laisse le chemin de base (généralement juste un / mais afin de préserver le bon fonctionnement de Drupal à partir d'un sous-répertoire d'un domaine qui ne devrait pas être codé en dur). Surpage.html.twig
ou dans tout modèle doté du préprocesseur ci-dessus, cela fonctionnera à cet effet:Et bien sûr, la réponse de Shawn Conn fonctionne bien si vous pouvez supprimer votre désir de jolis modèles, mais je ne le pourrais pas.
la source
Et selon la documentation de la page sur 8.2.x , deux variables globales ont été ajoutées pour renvoyer la page d'accueil et les URL de chemin de base:
Ainsi, vous pouvez obtenir l'URL de la page de police avec
front_page
et l'URL de base avecbase_url
Remarque
obtenir l'URL de la première page avec
{{ url('<front>') }}
un problème lorsque vous souhaitez la concaténer avec un autre chemin, par exemplerevenir
cela signifie par défaut n'est pas du texte et renvoie un tableau capable de rendu à la brindille
la source
Dans
& dans le fichier modèle, vous pouvez appeler via
la source
Jusqu'à présent, ce fil n'apporte aucune solution appropriée. Nous pouvons le concaténer en utilisant render_val ()
Voici comment je l'ai utilisé pour obtenir le chemin absolu d'une image d'entité:
Nous obtenons d'abord l'URL de base du site. Ensuite, nous devons supprimer un extra /. Ensuite, nous concaténons notre chemin de base avec notre chemin relatif d'image.
la source
Tout ce qui précède a échoué pour moi, car j'ai configuré les chemins de langue, donc mon URL de première page ressemble
https://example.com/en
.J'ai fini par utiliser ce code pour obtenir l'URL de base réelle de mon site:
la source
Je sais que vous avez déjà marqué cela comme correct, mais cela peut être utilisé comme élément de brindille dans un fichier de modèle sans aucun travail supplémentaire. J'ai trouvé cela dans le bloc - system-branding-block.html.twig du thème Classy. Vous pouvez donc l'utiliser comme ceci:
la source