是否有优先考虑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")
*/
.....
Run Code Online (Sandbox Code Playgroud)
配置
//routing.yml
acme_bundle:
resource: "@Acme/Controller"
type: annotation
Run Code Online (Sandbox Code Playgroud)
目标
URL , Actual , Goal
/test/a , DummyController , TestController //Wrong
/test/b , DummyController , DummyController //Good
Run Code Online (Sandbox Code Playgroud)
我如何强制TestController首先进行测试?
谢谢
从您的示例中我可以假设您的虚拟和测试控制器位于同一个包中,如果是这种情况,那么您只需在routing.yml中单独列出该包中的控制器.您列出的顺序是他们将被检查的顺序.
acme_test:
resource: "@Acme/Controller/TestController.php"
type: annotation
acme_dummy:
resource: "@Acme/Controller/DummyController.php"
type: annotation
Run Code Online (Sandbox Code Playgroud)
如果它们位于不同的包中,则首先列出包含测试控制器的包.
有关详细信息,请参阅symfony路由文档. http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html#activation
因此,Symfony将按字母顺序使用控制器,并逐个添加路由.
如果不使用另一个捆绑包,那么目前无法增加优先级 currently version 2.5
如果您正在寻找高级路由,https://github.com/symfony-cmf/Routing是一个很棒的捆绑.