无论如何都要优先考虑Symfony2中的路线?
我正在使用它看起来像这样的注释
控制器
//TestController.php
/**
* @Route("/test")
*/
class TestController extends Controller
{
/**
* @Route("/a", name="test_a")
*/
.....
//DummyController.php
/**
* @Route("/")
*/
class DummyController extends Controller
{
/**
* @Route("/{varA}/{varB}", name="dummy_one")
*/
.....
配置
//routing.yml
acme_bundle:
resource: "@Acme/Controller"
type: annotation
目标
URL , Actual , Goal
/test/a , DummyController , TestController //Wrong
/test/b , DummyController , DummyController //Good
如何强制TestController首先进行测试?
由于
答案 0 :(得分:8)
从您的示例中我可以假设您的虚拟和测试控制器位于同一个包中,如果是这种情况,那么您只需在routing.yml中单独列出该包中的控制器。您列出的顺序是他们将被检查的顺序。
acme_test:
resource: "@Acme/Controller/TestController.php"
type: annotation
acme_dummy:
resource: "@Acme/Controller/DummyController.php"
type: annotation
如果它们位于不同的包中,只需首先列出包含测试控制器的包。
有关详细信息,请参阅symfony路由文档。 http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html#activation
答案 1 :(得分:5)
因此,Symfony将按字母顺序使用控制器,并逐个添加路径。
目前无法在不使用currently version 2.5
答案 2 :(得分:0)
您无需重新排序所有内容。只需在所需的排名中覆盖DummyController的规则。您可以通过在routing.yml末尾创建到控制器的路由来完成此操作。 所以在您的routing.yml中作为最后一行添加:
app_dummy:
ressource: "@YourBundle/Controller/DummyController.php
type: annotation