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

Publicada el

2 de octubre de 2017

Etiquetas

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.