如何在routing.yml Symfony2中声明这两个方法?

时间:2014-04-09 09:42:20

标签: symfony routing yaml http-method

我想在routing.yml中为同一路由声明两种方法 GET POST

根据the documentation,可以使用这样的注释:

/**
 * @Route("/edit/{id}")
 * @Method({"GET", "POST"})
 */

但是如何 YAML ?我尝试了不同的东西:

contact_envoi:
    pattern:  /contact-envoi
    defaults: { _controller: AcmeDemoBundle:Default:contactEnvoi }
    requirements:
        sf_method: ['get','post']

...
    requirements:
        _method: { 'GET', 'POST' }

但它仍然不起作用...请帮助,我在文档中没有发现任何相关内容。

3 个答案:

答案 0 :(得分:7)

感谢Touki的评论,它有效!

我必须在两个单独的共享上声明两次相同的URL,并且每个都有自己的方法,如Symfony 2.1的here和Symfony 2.2的here所述。

contact:
    path:     /contact
    defaults: { _controller: AcmeDemoBundle:Main:contact }
    methods:  [GET]

contact_process:
    path:     /contact
    defaults: { _controller: AcmeDemoBundle:Main:contactProcess }
    methods:  [POST]

答案 1 :(得分:5)

您可以使用GET和POST方法获得相同的路径。

contact:
path:     /contact
defaults: { _controller: AcmeDemoBundle:Main:contact }
methods:  ['GET','POST']

然后在您的控制器中管理使用的方法。

public function contactAction(Request $request)
{
    if ('POST' === $request->getMethod()) {
        ..
    }
}

答案 2 :(得分:4)

只需删除方法

contact:
  path:     /contact
  defaults: { _controller: AcmeDemoBundle:Main:contact }