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

Bir*_*won 2 symfony

我有这个例子的Symfony2文档的基本表单,模板和控制器操作.

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

$parameters = $request->request->all();
$name = $parameters["form"]["name"];
Run Code Online (Sandbox Code Playgroud)

但是,在文档中使用此:

$name = $request->request->get('name');
Run Code Online (Sandbox Code Playgroud)

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

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

Alt*_*PHP 10

$formPost = $request->request->get('form');
$name = $formPost['name'];
Run Code Online (Sandbox Code Playgroud)

或者从PHP 5.4开始

$name = $request->request->get('form')['name'];
Run Code Online (Sandbox Code Playgroud)

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

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

    $name = $form->get('name')->getData();
}
Run Code Online (Sandbox Code Playgroud)