Forms Symfony2-表单方法从POST切换到GET?

Forms Symfony2-表单方法从POST切换到GET?,forms,symfony,Forms,Symfony,我正在Symfony2中手动构建登录表单(不使用表单生成器),由于某些原因,POST方法被忽略;目标页面看到GET请求,因此我无法访问已发布的字段值 以下是表格: <form action="/mysite/web/dologin" method="POST"> Email: <input name=email type=text size=40> Password: <input name=password type=password size=40&

我正在Symfony2中手动构建登录表单(不使用表单生成器),由于某些原因,POST方法被忽略;目标页面看到GET请求,因此我无法访问已发布的字段值

以下是表格:

<form action="/mysite/web/dologin" method="POST">
   Email: <input name=email type=text size=40>
   Password: <input name=password type=password size=40>
   <input type=submit>
</form>
以及控制器动作:

public function dologinAction()
{
        $request = $this->getRequest();
        var_dump($request);
}
我提交的表单在两个字段中都有值,但没有值通过。结果请求转储的相关部分如下所示;注意“请求”中没有字段:

如果我在HTML表单中将方法更改为“GET”,则已识别的request_方法仍然是GET,但表单值现在可用:

  ["request"]=>
  object(Symfony\Component\HttpFoundation\ParameterBag)#8 (1) {
    ["parameters":protected]=>
    array(0) {
    }
  }
  ["query"]=>
  object(Symfony\Component\HttpFoundation\ParameterBag)#9 (1) {
    ["parameters":protected]=>
    array(2) {
      ["email"]=>
      string(13) "test@test.com"
      ["password"]=>
      string(4) "mypw"
    }
  }

为什么会这样?为什么POST被忽略?是否需要指定编码类型?我知道您可以保护Symfony中的表单免受跨站点攻击;我想知道这是否是我需要更改的默认配置值

回答我自己的问题:我需要表单action('/dologin')和路由规范('/dologin/')对应尾随斜杠。在表单操作中添加尾部斜杠修复了一些问题

你检查过这个过程中没有重定向吗?
  ["request"]=>
  object(Symfony\Component\HttpFoundation\ParameterBag)#8 (1) {
    ["parameters":protected]=>
    array(0) {
    }
  }
  ["query"]=>
  object(Symfony\Component\HttpFoundation\ParameterBag)#9 (1) {
    ["parameters":protected]=>
    array(0) {
    }
  }
  ...
  ["REQUEST_METHOD"]=>
  string(3) "GET"
  ["request"]=>
  object(Symfony\Component\HttpFoundation\ParameterBag)#8 (1) {
    ["parameters":protected]=>
    array(0) {
    }
  }
  ["query"]=>
  object(Symfony\Component\HttpFoundation\ParameterBag)#9 (1) {
    ["parameters":protected]=>
    array(2) {
      ["email"]=>
      string(13) "test@test.com"
      ["password"]=>
      string(4) "mypw"
    }
  }