我正在使用Symfony2并且我试图将表单发布到我的控制器,但我的控制器每次都将其作为GET请求...即使我使用restclient,我放POST的请求,但当我使用$ request-> getMethod()时,答案总是GET:/
源代码非常简单:
<?php
namespace TC\UserBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class UserController extends Controller
{
/**
* @Route("/user/register")
* @Method({"POST"})
*/
public function registerAction(Request $request)
{
echo $request->getMethod();
return new Response();
}
}
当我添加需求_method:这样的POST:
tc_user_register:
path: /user/register/
defaults: { _controller: TCUserBundle:User:register }
requirements:
_method: POST
我得到了这个: 找不到&#34; POST / user / register&#34; 无论我做什么,Symfony2都把它作为GET请求,任何想法?
谢谢!
答案 0 :(得分:2)
一些事情@Xtroyer:
1 如果您使用routing.yml文件,则自Symfony 2.2后无法识别requirements: _method
,现在是:
tc_user_register:
path: /user/register/
defaults: { _controller: TCUserBundle:User:register }
methods: [POST]
2 如果您使用注释。如果您未在控制器中提及以下使用声明,则无法识别@Method:
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
3 您可以使用以下命令检查确切注册的路线?
php app/console router:debug | grep tc_user_register
您应该:
Name Method Scheme Host Path
tc_user_register POST ANY ANY /user/register/