Routing Symfony路由问题,路由被忽略
我的Routing Symfony路由问题,路由被忽略,routing,symfony1,Routing,Symfony1,我的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:
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 }
主页:
网址:/
参数:{module:main,action:index}
默认索引:
url:/:模块
参数:{action:index}
违约:
url:/:模块/:操作/*
sf\U保护\U寄存器:
url:/register
参数:{module:user,action:register}
安全警卫签字:
url:/login
参数:{module:sfGuardAuth,action:signin}
sf_警卫_签出:
url:/注销
参数:{module:sfGuardAuth,action:signout}
sf\u保护\u密码:
url:/request\u密码
参数:{module:sfGuardAuth,action:password}
当我尝试/register
路线时,我得到以下结果:
操作“寄存器/索引”不存在
我应该指定,我没有“注册”模块,如果手动调用,我的用户模块工作正常。另外,其他路线也很好
欢迎任何意见,谢谢 路由按照它们在routing.yml
文件中列出的顺序进行处理。因此,url/寄存器在到达sf\U guard\U寄存器之前匹配默认的索引路由。默认索引和默认值都应该放在routing.yml
文件的底部。路由按照它们在routing.yml
文件中列出的顺序进行处理。因此,url/寄存器在到达sf\U guard\U寄存器之前匹配默认的索引路由。默认索引和默认值都应该放在routing.yml
文件的底部。与jeremy的答案一致:
由于您的默认\u索引
路由位于上方,因此转到/register
会使此路由匹配。由于它位于sf\u-guard\u寄存器
路由之前,因此只有第一个匹配项“计数”
您的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\u作为或链接到帮助程序时找出要匹配的路由要快。因此,请禁用默认路由并自己创建路由。然后,在生成URL时使用路由的名称
最常用的路由应该放在顶部,例如,如果所有页面上都有寄存器链接,则应该将sf\u guard\u register
放在顶部
就我的5美分-希望你觉得有用;-) 与杰里米的回答一致:
由于您的默认\u索引
路由位于上方,因此转到/register
会使此路由匹配。由于它位于sf\u-guard\u寄存器
路由之前,因此只有第一个匹配项“计数”
您的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\u作为或链接到帮助程序时找出要匹配的路由要快。因此,请禁用默认路由并自己创建路由。然后,在生成URL时使用路由的名称
最常用的路由应该放在顶部,例如,如果所有页面上都有寄存器链接,则应该将sf\u guard\u register
放在顶部
就我的5美分-希望你觉得有用;-) 您甚至应该删除两条默认路线:
default_index:
url: /:module
param: { action: index }
default:
url: /:module/:action/*
因为使用它们是不好的做法,所以应该始终创建特定的路线
添加路由的最佳方法是将它们预先添加到您的文件中,在最顶端添加每个新路由
另外,在前端调试路由的一个好方法是运行:
symfony app:routes frontend
因此,您将看到wich route maches是什么(及其要求,如果有的话)您甚至应该删除2条默认路线:
default_index:
url: /:module
param: { action: index }
default:
url: /:module/:action/*
因为使用它们是不好的做法,所以应该始终创建特定的路线
添加路由的最佳方法是将它们预先添加到您的文件中,在最顶端添加每个新路由
另外,在前端调试路由的一个好方法是运行:
symfony app:routes frontend
因此,您将看到wich route maches是什么(以及它的要求,如果有的话)非常感谢,您的解决方案是有效的,您的建议非常明智。:)非常感谢,您的解决方案很有效,您的建议也很明智。:)