В Symfony роутинг представляет собой механизм, который определяет, какие URL-адреса должны сопоставляться с какими действиями контроллера. Он позволяет связать адреса URL с определенными контроллерами и их действиями, которые возвращают ответ клиенту.
Роутинг в Symfony основан на бандлах (bundle). Бандл - это набор футболок, представляющих собой замкнутую функциональность приложения. Он может содержать контроллеры, модели, представления, шаблоны и другие файлы, связанные с его функционированием.
Роутинг в бандле определяется в файле config/routes.yaml
или config/routes.php
, в зависимости от версии Symfony. В этом файле добавляются определения маршрутов с помощью специального синтаксиса.
Пример определения маршрута в файле routes.yaml
:
# config/routes.yaml app_bundle_homepage: path: /hello/{name} controller: AppControllerHomeController::index
В данном примере мы создали маршрут с именем app_bundle_homepage
, который будет обрабатывать URL-адрес вида /hello/{name}
. Фигурные скобки {name}
указывают на переменную, которая будет передаваться в действие контроллера. Контроллер AppControllerHomeController::index
будет вызываться при обращении к этому маршруту.
Маршруты могут содержать различные параметры, такие как path
, methods
, requirements
и др., чтобы более точно определить, каким запросам должен соответствовать маршрут.
Чтобы использовать определенные в бандле маршруты, необходимо зарегистрировать его в основном конфигурационном файле config/bundles.php
, указав класс бандла:
// config/bundles.php return [ SymfonyBundleFrameworkBundleFrameworkBundle::class => ['all' => true], AppAppBundleAppBundle::class => ['all' => true], ];
После регистрации бандла и его маршрутов необходимо выполнить команду bin/console cache:clear
для обновления кэша роутинга.
Таким образом, роутинг в Symfony для бандла позволяет определить, какие URL-адреса должны соответствовать каким действиям контроллера. Он основан на файлах маршрутов, которые могут быть определены в конфигурационных файлах бандлов и регистрируются в главном конфигурационном файле приложения.