从输入表单到控制器的数据

时间:2013-05-21 00:04:14

标签: forms symfony

要生成表单,我使用
{{ form_rest(form) }}
它生成了一个html:

<label class="required" for="findclient_client_number">Client number</label>
<input id="findclient_client_number" type="text" required="required" name="findclient[client][number]">

在控制器上我试图通过以下方式访问数据:

$form = $this->createForm(new FindClientType(), new FindClient());
$form->bind($this->getRequest()); 
$clientnumber = $form->get('number')->getData();
return $this->render(
                    'MyDefaultBundle:Default:client.html.twig', array('clientnumber' => $clientnumber)
    );

得到错误:

  

儿童“[数字]”不存在。

如何从该字段获取提交的数据? 谢谢你的帮助...

2 个答案:

答案 0 :(得分:0)

您需要先将请求绑定到表单。有Form::bind()方法可以为您完成此操作。

$form = $this->createForm(new ClientType());

if ($request->isMethod('POST')) {
    $form->bind($this->get('request'));
    $form->getData(); // Will return bound data
}

您还可以直接从控制器中的请求中获取数据。

$this->get('request')->request->get('name')

请参阅http://symfony.com/doc/master/book/forms.html#using-a-form-without-a-class

答案 1 :(得分:0)

Ryans answer之外,您使用的是对象(FindClient)。因此,只需绑定您的表单,获取数据并处理您的FindClient对象即可获取您的号码。

$form = $this->createForm(new FindClientType(), new FindClient());
if ($request->isMethod('POST')) {
    $form->bind($this->getRequest());
    $data = $form->getData(); // Will return bound data
    $clientnumber = $data->getNumber() // assuming your getter for the number
}