我目前在我的 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
with app_bar
route 的动作。
所以我试图定义以下路由:
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
vs的目的,config/routes.yaml
因为两者都可以包含任何类型的路线......我错过了什么?