【问题标题】:Is there a way to use both dynamic and static path on one controller?有没有办法在一个控制器上同时使用动态和静态路径?
【发布时间】:2019-12-30 08:06:08
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: php symfony symfony-routing


    【解决方案1】:

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

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

    您应该在“控制器”导入之前添加“/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
    

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

    【讨论】:

      猜你喜欢
      • 2014-08-16
      • 2014-11-14
      • 1970-01-01
      • 2013-11-28
      • 2023-04-05
      • 2014-01-17
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      相关资源
      最近更新 更多