В настоящее время я застрял с маршрутизацией в моем проекте 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
, поскольку оба могут содержать маршруты любого типа ... Я что-то пропустил?