有没有办法在一个控制器上同时使用动态和静态路径?

时间:2019-08-26 06:21:01

标签: php symfony symfony-routing

我自己创建了一个Symfony CMS。我想同时映射/login/{slug}之类的路径,但我不知道是否可能。

我尝试只在两个不同的控制器中设置两个路径,但这似乎不起作用。

/**
*@Route('/login', name='login')
*/
public function login(){}

/**
*@Route('/{slug}', name='dynamic-site')
*/
public function dynamicSite(){}

使用上述设置,每次都到达第二条路径。无法访问登录。我希望Symfony首先尝试找到硬编码的路由,但似乎并不可行。

1 个答案:

答案 0 :(得分:1)

路由尝试按其定义顺序一一匹配路由。 因此,您必须订购控制器。 可能您有

controllers:
    resource: '../src/Controller/'
    type: annotation

您应在“ controllers”导入之前添加“ / login”

login:
    controller: App\Controller\Login
    type: annotation

结果应该是

# config/routes.yaml
login:
    controller: App\Controller\Login
    type: annotation
Slug:
    controller: App\Controller\Slug
    type: annotation
  

不要忘记根据您的应用程序更改控制器名称!

您可以重新阅读文档-https://symfony.com/doc/current/routing.html

我个人更喜欢使用yaml,因为顺序非常明确。

您应该测试是否可以同时导入两个

login:
    controller: App\Controller\Login
    type: annotation
controllers:
    resource: '../src/Controller/'
    type: annotation

您可能会遇到错误。如果出现错误,则必须按1列出所有控制器。