无法发布到symfony2

时间:2014-11-27 05:58:21

标签: symfony post

我正在使用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请求,任何想法?

谢谢!

1 个答案:

答案 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/