Перенаправления на другие 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