Порядок маршрутизации аннотаций Symfony
В настоящее время я застрял с маршрутизацией в моем проекте Symfony4 (4.3). Моя проблема довольно проста, я хочу использовать аннотации маршрутов в моих контроллерах, но я хочу определить их порядок.
Например, если у меня есть два контроллера со следующей маршрутизацией:
class BarController extends AbstractController
{
/**
* @Route("/test/{data}", name="app_bar")
*/
public function index($data)
{
// ...
return $this->render('index.html.twig', [
'data' => $data,
]);
}
}
а также
class FooController extends AbstractController
{
/**
* @Route("/test/my_value", name="app_foo")
*/
public function index()
{
// ...
return $this->render('index.html.twig', [
'data' => 'my_value',
]);
}
}
В config/routes/annotations.yaml
Я определяю свой маршрут так
app_controllers:
resource: ../../src/Controller/
type: annotation
Тогда если я позвоню /test/my_value
Я хотел бы быть перенаправлен на FooController
так как его index
определение действия @Route("/test/my_value", name="app_foo")
но как маршруты загружается в алфавитном порядке index
действие от BarController
с участием app_bar
Маршрут называется первым.
Поэтому я попытался определить следующую маршрутизацию:
app_foo_controller:
resource: ../../src/Controller/FooController.php
type: annotation
app_controllers:
resource: ../../src/Controller/
type: annotation
Но это не сработало, BarController и его app_bar
маршрут до сих пор называется app_foo
маршрут из FooController.
Кроме того, я не понимаю цель config/routes/annotations.yaml
против config/routes.yaml
так как оба могут содержать любые типы маршрутов... я что-то пропустил?
1 ответ
Неважно я нашел решение. Я просто скучаю по тому факту, что я переопределить мой конкретно app_foo_controller
маршрутизация, когда я определяю app_controllers
решение состоит в том, чтобы определить каждый контроллер следующим образом:
app_controllers:
resource: ../../src/Controller/
type: annotation
app_foo_controller:
resource: ../../src/Controller/FooController.php
type: annotation
app_bar_controller:
resource: ../../src/Controller/BarController.php
type: annotation