路由在 Symfony2 中不起作用

Routes not working in Symfony2

我有一个非常奇怪的问题。我将新操作附加到控制器,将其注册到路由 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 }

当我替换并设置它时,一切正常。

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

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

路由的处理就像它们是一个列表一样,就像它试图提高效率的任何计算机功能一样。
因此,当它找到与给定 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 }

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