Symfony2:将表单呈现为字符串

时间:2014-07-31 11:19:18

标签: forms symfony twig

我正在尝试从Symfony2中的字符串渲染表单并将结果输入变量。 我尝试了这个解决方案,Symfony 2 Twig form functions not available但是我收到了一个错误(service' twig.form.renderer' not avaliable)。所以我改变了addExtension部分(不确定类)。 这是我的代码:

$env = new \Twig_Environment(new \Twig_Loader_String());
$rendererEngine = new \Symfony\Bridge\Twig\Form\TwigRendererEngine();
$env->addExtension(new \Symfony\Bridge\Twig\Extension\FormExtension(new \Symfony\Bridge\Twig\Form\TwigRenderer($rendererEngine)));
$form = $this->createFormBuilder()->add('testField', 'text');
$form = $form->getForm()->createView();
return $env->render(
    '{{ form(form) }}',
    array('form' => $form)
);

现在我得到"致命错误:未捕获的异常' Symfony \ Component \ Form \ Exception \ LogicException'有消息'没有阻止"形式"在渲染表单时发现#34;

2 个答案:

答案 0 :(得分:0)

您应该包含form_div_layout,其中form块已定义。

答案 1 :(得分:0)

对于twig模板,我使用此代码:

$twig = $this->container->get('twig');
$twig->initRuntime();

return JsonResponse::create(array(
    'success' => false,
    'form' => $twig->getExtension('form')->renderer->searchAndRenderBlock($form->createView(), 'widget'),
));

用于php模板引擎:

$this->container->get('templating.helper.form')->widget($form->createView());