【问题标题】:Routes not working in Symfony2路由在 Symfony2 中不起作用
【发布时间】:2015-01-19 23:47:57
【问题描述】:

我有一个非常奇怪的问题。我将新操作附加到控制器,将其注册到路由 yml 文件中。 route:debug 显示可用的路由。但是当我尝试访问这个 url 时,我收到了关于 的错误,该路由不存在。我做错了什么?旧路线正常工作。 这条路线赶上以下路线:

vputi_company:
path:     /company/{company_id}
defaults: { _controller: VputiCompanyBundle:Company:showCompany, company_id: 0 }

捕获:

vputi_company_dashboard:
path:     /company/dashboard
defaults: { _controller: VputiCompanyBundle:Company:companyDashboard }

当我替换它并将其设置为最重要时,它可以正常工作。

【问题讨论】:

  • 请提供一些代码来检查某些东西... PS:如果您在 prod 环境中尝试清除缓存...
  • 没有有趣的代码可以发布。我清除了 10 亿次缓存。我尝试更改一项操作的返回,但它仍然返回旧结果..
  • 路由的顺序也很重要,是否有可能之前的路由捕获了您尝试处理的 URL?
  • @Rooneyl,解决了我的问题。但是,关于 url 顺序的问题,两条路线的工作相关但不同,第一条路线(动作)如何赶上第二条路线?
  • @Panzer_Commander 如果你发布你的路线,我会在答案中解释它

标签: symfony routing


【解决方案1】:

路由被处理成一个列表,就像它试图提高效率的任何计算机功能一样。
因此,当它找到与给定 URL 匹配的路由时,它会运行该路由然后停止。

您的示例路线;

vputi_company:
path:     /company/{company_id}
defaults: { _controller: VputiCompanyBundle:Company:showCompany, company_id: 0 }
vputi_company_dashboard:
path:     /company/dashboard
defaults: { _controller: VputiCompanyBundle:Company:companyDashboard }

在您的示例路由中,{company_id} 的变量可能是字符串“dashboard”,因此满足列出的第一个路由,而不是传递到下一个路由(您想要的那个)。

重新排序的路线;

vputi_company_dashboard:
    path:     /company/dashboard
    defaults: { _controller: VputiCompanyBundle:Company:companyDashboard }
vputi_company:
    path:     /company/{company_id}
    defaults: { _controller: VputiCompanyBundle:Company:showCompany, company_id: 0 }

通过重新排序,您的意思是将公司与字符串仪表板匹配,如果不是,则将第二个参数作为变量传递。

【讨论】:

    【解决方案2】:

    检查您是否忘记了路线中的参数。 (或者你可能在末尾添加一个不需要的“/”)

    正如 Matteo 所说,清除您的缓存 (php app/console cache:clear) 并向我们提供代码

    【讨论】:

      猜你喜欢
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多