【问题标题】:Symfony 3 - render_false form not workingSymfony 3 - render_false 表单不起作用
【发布时间】:2018-03-02 18:57:52
【问题描述】:

我正在使用 Symfony 3 开发一个项目,但我的 render_false 有问题。

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

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

然后,我在 Twig 上显示这些字段。但是,我不想渲染其余部分。 所以我使用选项:{{ form_end(form, {'render_rest': false}) }}

但是 Symfony 还给我

"类型错误:传递给 Bill::setEntreeAutomateInput() 的参数 1 必须 属于字符串类型,给定 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();

在第一行失败

【问题讨论】:

  • 是在您创建或编辑实体时?您的实体是否具有可空参数的设置器? (如setEntreeAutomateInput(string $param = null)
  • 当我编辑实体时,我不会通过表单创建实体。并且 setter 不能为空。我想补充一点,当我使用 {{ form_rest(form) }} 时,我可以毫无问题地进行编辑,并将其保存在数据库中。

标签: symfony


【解决方案1】:

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

你可以使用:

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

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

【讨论】:

    猜你喜欢
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 2017-02-27
    • 2017-12-20
    • 1970-01-01
    相关资源
    最近更新 更多