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

Ant*_*bit 3 routing yaml http-method symfony

我想在routing.yml中为同一路由声明两个方法GETPOST.

根据文档,可以使用这样的注释:

/**
 * @Route("/edit/{id}")
 * @Method({"GET", "POST"})
 */
Run Code Online (Sandbox Code Playgroud)

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

contact_envoi:
    pattern:  /contact-envoi
    defaults: { _controller: AcmeDemoBundle:Default:contactEnvoi }
    requirements:
        sf_method: ['get','post']
Run Code Online (Sandbox Code Playgroud)

...
    requirements:
        _method: { 'GET', 'POST' }
Run Code Online (Sandbox Code Playgroud)

但它仍然无效...请帮助,我在文档中没有发现任何相关信息.

Ant*_*bit 7

感谢Touki的评论,它的确有效!

我不得不宣布在两个单独的股两次相同的URL和每个都有自己的方法中说明这里的Symfony的2.1和这里的Symfony的2.2.

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

contact_process:
    path:     /contact
    defaults: { _controller: AcmeDemoBundle:Main:contactProcess }
    methods:  [POST]
Run Code Online (Sandbox Code Playgroud)


小智 5

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

contact:
path:     /contact
defaults: { _controller: AcmeDemoBundle:Main:contact }
methods:  ['GET','POST']
Run Code Online (Sandbox Code Playgroud)

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

public function contactAction(Request $request)
{
    if ('POST' === $request->getMethod()) {
        ..
    }
}
Run Code Online (Sandbox Code Playgroud)