3

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

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

/**
 * @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' }

但它仍然不起作用......请帮忙,我在文档中没有找到任何关于此的内容。

4

3 回答 3

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]
于 2014-04-09T10:02:02.283 回答
5

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

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

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

public function contactAction(Request $request)
{
    if ('POST' === $request->getMethod()) {
        ..
    }
}
于 2014-04-09T15:16:43.457 回答
4

只需删除方法

contact:
  path:     /contact
  defaults: { _controller: AcmeDemoBundle:Main:contact }
于 2014-04-09T16:15:01.183 回答