这个Symfony2路由器配置正确吗?

时间:2016-02-26 14:32:22

标签: php symfony url-routing

我被要求在客户的网站上修复破损的联系表格。在提交表单时应该触发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 }

1 个答案:

答案 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

注意:我不知道您的表单是如何显示的,处理方式也是如此,因此您不会遇到有关呼叫的其他问题或不是好的路线提交。