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 au example.theme
fichier:
/**
* Implements hook_preprocess_block().
*/
function example_preprocess_block(&$variables) {
$variables['base_path'] = base_path();
}
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). Sur page.html.twig
ou dans tout modèle doté du préprocesseur ci-dessus, cela fonctionnera à cet effet:
<img src="{{ base_path ~ directory }}/images/nsf1.svg"
alt="National Science Foundation logo" height="80" width="80" />
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.