Nuevo en Symfony 3.4: mejoras al generar las URL de los assets
Generar URLs desde un comando de consola es más difícil de lo que parece porque
la consola no tienen ningún contexto sobre HTTP: no hay petición, ni servidor,
ni virtual hosts, ni nombres de host, ni nada. Por eso, al generar una URL
desde un comando, se utiliza el host http://localhost
por defecto.
Symfony soluciona este problema mediante los parámetros de configuración
router.request_context.*
, que permiten definir el host, el esquema HTTP
(para las URLs bajo HTTPS) y el prefijo que se añade a todas las URL.
Sin embargo, cuando se generan las URL de los assets con la función asset()
,
este problema se repite. Si tu aplicación está por ejemplo instalada en un
subdirectorio y tiene configurado este parámetro:
# app/config/parameters.yml router.request_context.base_path: '/subfolder'
Al llamar a asset('/foo/image.jpg')
, el resultado será /foo/image.jpg
en vez
de la URL esperada /subfolder/foo/image.jpg
. Por eso en Symfony 3.4 hemos
introducido dos nuevos parámetros llamados asset.request_context.base_path
y
asset.request_context.secure
para definir el contexto HTTP por defecto para los
assets. Así que, en esta misma aplicación, si defines este parámetro:
# app/config/parameters.yml asset.request_context.base_path: '/subfolder'
Ahora la función asset('/foo/image.jpg')
sí que genera la URL que esperas:
/subfolder/foo/image.jpg
.
Esta funcionalidad fue contribuida por Roland Franssen en el Pull Request #21027.
Fuente: New in Symfony 3.4: Default request context for assets
Comentarios
Proyectos Symfony destacados
La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.