Quiero usar la ruta base en un archivo de plantilla Drupal 8. Intenté lo siguiente, pero no obtengo el resultado correcto.
{{ app.request.baseUrl }}
{{base_path}}
Lo que necesito es la ruta absoluta al nodo {{ app.request.baseUrl }}/{{ url }}
.
Una solución que encontré es poner este código en un enlace de preproceso y pasarlo al tema.
$host = \Drupal::request()->getHost();
$response = \Drupal::httpClient()
Estoy buscando una mejor solución. ¿Qué debería usar en lugar del que estoy usando?
path()
función se puede aplicar para recuperar la ruta del nodo:{{ path('entity.node.canonical', {'node': node.id}) }}
Casi nunca necesita construir explícitamente rutas a partir de partes en Drupal 8. Yo iría con algo como esto:
fuente
toString
cuenta show, luego probé kint (url) y vi que era un objeto.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 alexample.theme
archivo: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). Enpage.html.twig
cualquier plantilla que tenga el preprocesador anterior, esto funcionará para ese propósito:Y, por supuesto, la respuesta de Shawn Conn funciona bien si puedes suprimir tu deseo de plantillas bonitas, pero no pude.
fuente
Y de acuerdo con la documentación de la página en 8.2.x , se agregaron dos variables globales para volver a la página principal y a las URL de ruta base:
Para que pueda obtener la fuente de la URL de la página
front_page
y la base de la URL conbase_url
Nota
obtener la URL de la página principal
{{ url('<front>') }}
tiene un problema cuando desea concat con otra ruta, como ejemploregreso
Esto significa que, por defecto, no es texto y devuelve una matriz capaz de renderizar a Twig
fuente
En
y en el archivo de plantilla puede llamar a través de
fuente
Hasta ahora este hilo no trae ninguna solución adecuada. Podemos concatenarlo usando render_val ()
Aquí está la forma en que lo usé, para obtener la ruta absoluta de una imagen de entidad:
Primero, obtenemos la URL base del sitio. Entonces necesitamos eliminar un extra /. Luego concatenamos nuestra ruta base con nuestra ruta relativa de imagen.
fuente
Todo lo anterior me falló porque tengo configuradas las rutas de idioma, por lo que la URL de mi página principal se ve así
https://example.com/en
.Terminé usando este código para obtener la URL base real de mi sitio:
fuente
Sé que ya has marcado esto como correcto, pero esto se puede usar como un elemento de ramita en un archivo de plantilla sin ningún trabajo adicional. Encontré esto en el bloque - system-branding-block.html.twig del tema Classy. Entonces puedes usarlo así:
fuente