我的app/frontend/config/routing.yml
中有以下内容:
homepage: url: / param: { module: main, action: index } default_index: url: /:module param: { action: index } default: url: /:module/:action/* sf_guard_register: url: /register param: { module: user, action: register } sf_guard_signin: url: /login param: { module: sfGuardAuth, action: signin } sf_guard_signout: url: /logout param: { module: sfGuardAuth, action: signout } sf_guard_password: url: /request_password param: { module: sfGuardAuth, action: password }
当我尝试/register
路线时,我明白了:
动作“注册/索引”不存在。
我应该指定,我没有“注册”模块,如果手动调用我的用户模块运行良好。另外,其他路线工作正常。
欢迎任何想法,谢谢!
答案 0 :(得分:4)
符合杰里米的回答:
由于您的default_index
路由位于上方,因此转到/register
会导致此路由匹配。由于它位于sf_guard_register
路线之前,因此只有第一个匹配“计数”。
您的routing.yml应如下所示:
sf_guard_register:
url: /register
param: { module: user, action: register }
sf_guard_signin:
url: /login
param: { module: sfGuardAuth, action: signin }
sf_guard_signout:
url: /logout
param: { module: sfGuardAuth, action: signout }
sf_guard_password:
url: /request_password
param: { module: sfGuardAuth, action: password }
homepage:
url: /
param: { module: main, action: index }
default_index:
url: /:module
param: { action: index }
default:
url: /:module/:action/*
此外,您可能还想要遵循一些最佳做法:
@homepage
)比让symfony在使用url_for
或link_to
帮助程序时确定要匹配的路由更快。因此,请禁用默认路由并自行创建路由。然后,在生成URL时使用路由名称。sf_guard_register
放在顶部。只需5美分 - 希望你觉得它有用; - )
答案 1 :(得分:1)
路由按照routing.yml
文件中列出的顺序进行处理。因此,url / register在到达sf_guard_register之前匹配default_index路由。 default_index和default都应该位于routing.yml
文件的底部。
答案 2 :(得分:0)
您甚至应该删除2条默认路线:
default_index:
url: /:module
param: { action: index }
default:
url: /:module/:action/*
因为使用它们是不好的做法,并且应该始终创建一个特定的路线。
添加路线的最佳方法是将它们预先添加到您的文件中,在最顶层添加每条新路线。
此外,在前端调试路由的一种好方法是运行:
symfony app:routes frontend
所以你会看到哪些路线是什么(及其要求,如果有的话)