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

Is there a way to use both dynamic and static path on one controller?

我正在自己创建一个 Symfony CMS。我想同时映射/login/{slug}这样的路径,不知道可不可以

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

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

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

通过上面的设置,每次都会到达第二条路径。没有办法访问登录。我希望 Symfony 首先尝试寻找硬编码路由,但它似乎并不像那样工作。

路由尝试按照定义的顺序一条一条地匹配路由。 所以,你必须订购你的控制器。 可能你有

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

您应该在 "controllers" import

之前添加“/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

Don't forget to change controller names according to your application!

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

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

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

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

您可能会遇到错误。如果出现错误,那么您将必须逐一列出所有控制器。