Silex:在无效提交后填入输入数据的表单

时间:2015-07-13 09:12:45

标签: twig silex

用户提交(未完成)表单后,我希望表单显示已输入的数据+错误消息。

使用此代码,表单在提交表单后为空:

$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) }}

1 个答案:

答案 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()
    )
);