Php 这个Symfony2路由器配置正确吗?
我被要求修复一个客户网站上损坏的联系人表单。提交表单时,Php 这个Symfony2路由器配置正确吗?,php,symfony,url-routing,Php,Symfony,Url Routing,我被要求修复一个客户网站上损坏的联系人表单。提交表单时,emailsend操作应该被触发,但它似乎不起作用。我已经检查了路由器,在我看来,/contact有两条路由,这意味着此操作永远不会被触发,因为具有该路径的另一条路由已经满足了要求。我对这一点的理解正确吗?如果是这样的话,我就不明白为什么以前的联系方式是有效的 foo_core_homepage: path: / defaults: { _controller: FooCoreBundle:Default:index
emailsend
操作应该被触发,但它似乎不起作用。我已经检查了路由器,在我看来,/contact
有两条路由,这意味着此操作永远不会被触发,因为具有该路径的另一条路由已经满足了要求。我对这一点的理解正确吗?如果是这样的话,我就不明白为什么以前的联系方式是有效的
foo_core_homepage:
path: /
defaults: { _controller: FooCoreBundle:Default:index }
foo_core_ourwork:
path: /work
defaults: { _controller: FooCoreBundle:Default:clients }
foo_core_services:
path: /services
defaults: { _controller: FooCoreBundle:Default:services }
foo_core_contact:
path: /contact
defaults: { _controller: FooCoreBundle:Default:contactMobile }
foo_core_findus:
path: /findus
defaults: { _controller: FooCoreBundle:Default:findus }
foo_core_email_send:
path: /contact
defaults: { _controller: FooCoreBundle:Default:emailsend }
您是对的,使用相同路径的两条路线中的一条将不可用。
您可以使用
debug:router
命令检查它们中的哪一个,但这肯定是最后一个
区分它们的方法是定义不同的需求,如下所示:
foo_core_contact:
path: /contact
defaults: { _controller: FooCoreBundle:Default:contactMobile }
requirements:
methods: GET
foo_core_email_send:
path: /contact
defaults: { _controller: FooCoreBundle:Default:emailsend }
requirements:
methods: POST
注意:我不知道您的表单是如何显示的,处理方式也是如此,因此您在提交时不会遇到关于调用或不是好路由的其他问题。路由按定义顺序进行评估。当找到匹配项时,它会停止搜索,选择该路线并运行它。您需要定义从最严格到最不严格的路线,以避免此类问题。谢谢。我没有写这个路由器,事实上我以前很少使用Symfony。最后一条路线永远不会匹配,对吗?是的,
foo\u core\u email\u send
永远不会被称为hanks,我会这样做。我不确定这本来是怎么工作的!也许他们只是没有注意到他们没有收到任何电子邮件/不客气!如果问题仍然存在,请不要犹豫地问另一个问题,我很乐意帮助您调试它。