我被要求在客户的网站上修复破损的联系表格。在提交表单时应该触发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 }
答案 0 :(得分:2)
你是对的,使用相同路径的两条路线中的一条将无法使用
你可以使用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
注意:我不知道您的表单是如何显示的,处理方式也是如此,因此您不会遇到有关呼叫的其他问题或不是好的路线提交。