Новое в Symfony 5.1: Улучшена настройка маршрута

Перенаправления на другие URL-адреса и маршруты позволяют развиваться приложениям Symfony без разрыва существующих ссылок. Эти перенаправления настраиваются в файлах YAML, XML или PHP вместо аннотаций, и полученная конфигурация была немного многословной.

В Symfony 5.1 улучшили его, чтобы сделать конфигурацию намного более лаконичной. В следующих примерах показаны изменения для файла config/rout.yaml, но это улучшение очень похоже на файлы конфигурации XML и PHP.

Перенаправление на другой маршрут:

# Before
doc_shortcut:
    path: /doc
    controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController
    defaults:
        route: 'doc_page'
        permanent: true

# After
doc_shortcut:
    path: /doc
    redirect_to_route: 'doc_page'
    permanent: true

Перенаправление на URL:

# Before
legacy_doc:
    path: /legacy/doc
    controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController
    defaults:
        path: 'https://legacy.example.com/doc'
        permanent: false

# After
legacy_doc:
    path: /legacy/doc
    redirect_to_url: 'https://legacy.example.com/doc'
    permanent: false

Также улучшили конфигурацию маршрутов, которые визуализируют шаблон напрямую, без выполнения каких-либо действий вашего контроллера:

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

# After
page_privacy:
    path: /site/privacy-policy
    template: 'static/privacy.html.twig'
    context:
        site_name: 'ACME'

Наконец, в Symfony 5.1 вы также можете определить, что URL пропал, временно (статус 404) или навсегда (статус 410) с опцией ушел:

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