在Symfony2控制器上获取表单参数

时间:2012-11-14 11:44:13

标签: symfony

我为此示例提供了Symfony2文档的基本表单,模板和控制器操作。

每当我尝试在控制器操作中获取表单的参数时,我必须使用它:

$parameters = $request->request->all();
$name = $parameters["form"]["name"];

但是,在文档中使用此:

$name = $request->request->get('name');

但这对我来说是错误的,在这种情况下$ name为null并且Object请求(ParameterBag)包含:

object(Symfony\Component\HttpFoundation\ParameterBag)#8 (1) {
  ["parameters":protected]=>
  array(1) {
    ["form"]=>
    array(1) {
      ["name"]=>
      string(4) "test"
    }
  }
}

1 个答案:

答案 0 :(得分:10)

$formPost = $request->request->get('form');
$name = $formPost['name'];

或者从PHP 5.4开始

$name = $request->request->get('form')['name'];

在我看来,访问提交数据的最佳方法是首先将请求绑定到表单,然后从Form对象访问值:

if ('POST' === $request->getMethod())
{
    $form->bindRequest($request); //Symfony 2.0.x
    //$form->bind($request); //Symfony 2.1.x

    $name = $form->get('name')->getData();
}
相关问题