Nuevo en Symfony 5.1: Configuración de rutas más sencilla

NOTA: finalmente esta funcionalidad no se añadió en Symfony 5.1, pero esperamos añadirla en Symfony 5.2.


Redirigir a otras URLs o rutas permite a las aplicaciones Symfony evolucionar sin romper ningún enlace existente. Estas redirecciones se configuran en archivos de configuración YAML, XML o PHP en vez de mediante anotaciones, por lo que la configuración es un poco verbosa.

En Symfony 5.1 la hemos mejorado para que la configuración sea mucho más concisa. Los siguientes ejemplos muestran los cambios para el archivo config/routes.yaml, pero la mejora es similar para los archivos XML y PHP.

Redirigir a otra ruta:

# Antes
doc_shortcut:
    path: /doc
    controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController
    defaults:
        route: 'doc_page'
        permanent: true
 
# Después
doc_shortcut:
    path: /doc
    redirect_to_route: 'doc_page'
    permanent: true

Redirigir a otra URL:

# Antes
legacy_doc:
    path: /legacy/doc
    controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController
    defaults:
        path: 'https://legacy.example.com/doc'
        permanent: false
 
# Después
legacy_doc:
    path: /legacy/doc
    redirect_to_url: 'https://legacy.example.com/doc'
    permanent: false

También hemos mejorado la configuración de las rutas que renderizan plantillas directamente sin ejecutar ninguno de tus controladores:

# Antes
page_privacy:
    path: /site/privacy-policy
    controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController
    defaults:
        template: 'static/privacy.html.twig'
        context:
            site_name: 'ACME'
 
# Después
page_privacy:
    path: /site/privacy-policy
    template: 'static/privacy.html.twig'
    context:
        site_name: 'ACME'

Por último, en Symfony 5.1 también puedes configurar las URLs que ya no están disponibles, temporalmente (código 404) o permanentemente (código 410), con la nueva opción gone:

conference:
    path: /foo-conference
    gone: true
    permanent: true

Esta funcionalidad fue contribuida por Jules Pietri en el pull request #30501.


Fuente: New in Symfony 5.1: Improved route configuration

Comentarios

Publicada el

1 de abril de 2020

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.