【发布时间】: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