我有一个非常奇怪的问题。我向控制器添加新动作,将其注册到路由yml文件中。 route:debug显示路由为可用。但是当我试图去这个网址时我得到错误,那条路线不存在。我做错了什么?旧路线正常工作。 这条路线下面的路线:
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 }
当我更换它并将其设置在上面时,一切正常。
答案 0 :(得分: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}
的变量可以是字符串" 信息中心",因此可以完成列出的第一条路线,而不会传递到下一条路线(你想要的路线)。
重新排序的路线;
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 }
通过重新排序你所说的匹配公司的字符串仪表板,如果没有,那么将第二个参数作为变量传递。
答案 1 :(得分:0)
检查您的路线中是否忘记了Params。 (或者你可能会添加一个不需要的" /"最后)
另外,Matteo说清除你的缓存(php app / console cache:clear)并为我们提供代码