提问者:小点点

Symfony 3-render_false窗体不工作


我正在Symfony3中处理一个项目,我对render_false有一个问题。

我得做一个动态表单。窗体的字段将取决于对象的值。而且有很多可能性。

我在控制器上进行所有这些处理,并返回一个数组,其中包含我必须显示的所有字段。

然后,我在Twig上显示那些字段。但是,我不想把剩下的。因此我使用了以下选项:{{form_end(form,{'render_rest':false})}}

但是Symfony回报我

“类型错误:传递给Bill::SetentreeAutomateInput()的参数%1的类型必须为string(给定null)”

我的印象是Symfony在我的字段为“”时用null填充,有可能对此进行补救?

这是我的edit.html.twig:

    {{ form_row(form.save, {'attr': {'class': 'ui button'}}) }}
    {{ form_widget(form._token) }}
    {{ form_end(form, {'render_rest': false}) }}

非常感谢大家

编辑:如果我使用

{{ form_rest(form) }}

它工作,但当然,这不是我想做的,因为它显示所有的字段

编辑2:如果可以帮助,在调试器中,当我尝试用以下方法提交请求时,控制器失败:

$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
  $em = $this->getDoctrine()->getManager();
  $em->persist($bill);
  $em->flush();

它在第一行失败


共1个答案

匿名用户

如果它能帮助某人。这不是一个干净的解决方案,但目前,我将使用它。

您可以使用:

  <div id="divCheckbox" style="display: none;">
         {{ form_rest(form) }}
    </div>

它将隐藏您想要隐藏的字段,并且您将能够保存您的表单。