Роуты (routes) в Symfony

После Yii2 они кажутся чем-то странным в Symfony, но аннотации, если так присмотреться, очень удобные. Каждый контроллер может быть гибко настроен под любой роут без танцев с бубном в UrlManager (пожалуй, самый яркий недостаток в Yii2, но я всё равно люблю его больше).

как это выглядит?

 

3cd1fe6ffc635d3aec44fce25cc80913Вот так. Аннотация @Route(«/debug/grab») позволяет привести через запрос ‘http://site.com/debug/grab’ именно к этому экшену.

Если нужен динамический url, запросто делаем вот так:

Таким образом удобно передавать в экшен какой-нибудь id и сразу отдавать его в модель. Роуты могут быть самыми разными, могут вообще не соответствовать названию контроллера, экшена и тд.

Чтобы работало описание роутов через аннотацию, очень важно:

Если работаете с PhpStorm, скачайте плагин Symfony, он помогает автоматически выявлять аннотации и делает много полезных вещей при работе с этим фреймворком.

Как выглядит обычный роутинг с помощью настроек routing.yml?

Как-то так. На самом деле, неудобно, но нельзя забивать на этот способ: иногда нам нужны роуты только в dev окружении, а иногда настройка конкретного роута слишком сложна, чтобы пихать её в аннотацию (да-да, в Yii2 для этого использовались всякие verbFilter и прочее). Вот тогда может пригодиться роутинг в конфиге.

Но всё-таки многие потребности роутинга удовлетворяет и аннотация:

То есть, можно указывать и метод передачи, и динамические роуты, и присваивать имена. Кстати, очень полезная штука. Я поначалу не понимал, зачем в конфиге определять роут через имя, как _errors в примере выше. А вот зачем: потом можно заставить Symfony генерировать ссылки на конкретный роут вне зависимости от того, насколько он усложнился или изменился — достаточно только указать имя этого роута.

Пример прямо из шаблона Twig:

Отсылка к предыдущему роуту.

Спасибо этому парню за материал.

Больше инфы.

 

 


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *