我自己创建了一个Symfony CMS。我想同时映射/login
和/{slug}
之类的路径,但我不知道是否可能。
我尝试只在两个不同的控制器中设置两个路径,但这似乎不起作用。
/**
*@Route('/login', name='login')
*/
public function login(){}
/**
*@Route('/{slug}', name='dynamic-site')
*/
public function dynamicSite(){}
使用上述设置,每次都到达第二条路径。无法访问登录。我希望Symfony首先尝试找到硬编码的路由,但似乎并不可行。
答案 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列出所有控制器。