我想在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' }
但它仍然不起作用...请帮助,我在文档中没有发现任何相关内容。
答案 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 }