用户提交(未完成)表单后,我希望表单显示已输入的数据+错误消息。
使用此代码,表单在提交表单后为空:
$request = $app['request'];
$form = $app['form.factory']->createBuilder('form')
->add('name', 'text', array( 'label' => 'Ihre Name:'))
->add('comment', 'text', array('constraints' => new Assert\Length(array('min' => 15))))
->getForm();
$twig_context = array('form' => $form->createView());
$form->handleRequest($request);
if ($form->isValid()) {
$data = $form->getData();
return 'valid!';
// Send form...
} else {
// display the form
return $app['twig']->render('contact.html.twig', $twig_context);
}
嫩枝模板:
{{ form_start(form) }}
{{ form_widget(form) }}
<div>
<input type="submit" value="Send" />
</div>
{{ form_end(form) }}
答案 0 :(得分:1)
您应该最后创建表单视图(可能在呈现模板之前)。在您的情况下,视图是在应用Request
的数据之前创建的。
此:
$twig_context = array('form' => $form->createView());
$form->handleRequest($request);
应该是:
$form->handleRequest($request);
你的渲染方法应该是:
return $app['twig']->render('contact.html.twig',
array(
'form' => $form->createView()
)
);