En page.html.twig
usted tendrá una {{ base_path }}
variable de trabajo . Por qué no está disponible en todas las plantillas, no tengo idea. Como creo que debería ser y todo lo demás parece desordenado, mi solución preferida es hacer exactamente lo mismo que Drupal en la función de página de preproceso para cualquier lugar donde lo necesite.
Para poner a {{ base_path }}
disposición plantillas de bloqueo en un tema llamado ejemplo, agregue este código al example.theme
archivo:
/**
* Implements hook_preprocess_block().
*/
function example_preprocess_block(&$variables) {
$variables['base_path'] = base_path();
}
Como se señala en la respuesta aceptada proporcionada por MPD, si obtiene la URL de un nodo u otra entidad, hay métodos para hacerlo todo por usted.
Sin embargo, hay razones para obtener la ruta_base, como cuando se muestran imágenes que viven en su carpeta de temas. {{ directory }}
proporciona la ruta a la carpeta del tema, pero deja fuera la ruta base (generalmente solo un / pero para preservar el correcto funcionamiento de Drupal desde un subdirectorio de un dominio que no debería estar codificado). En page.html.twig
cualquier plantilla que tenga el preprocesador anterior, esto funcionará para ese propósito:
<img src="{{ base_path ~ directory }}/images/nsf1.svg"
alt="National Science Foundation logo" height="80" width="80" />
Y, por supuesto, la respuesta de Shawn Conn funciona bien si puedes suprimir tu deseo de plantillas bonitas, pero no pude.