经过多次Google搜索(包括阅读许多Stack Overflow问题和答案)以及花费几个小时阅读Symfony源代码(无济于事),我最终决定在此处创建一个帐户并询问社区。 p>
我的问题是,应该是可选的表单字段在未填写时返回标准的NotBlank错误消息,尽管底层实体属性没有NotBlank约束 - 实际上设置为允许空值:
/**
* @ORM\Column(type="integer", nullable=true)
* @Assert\Type("integer")
*/
protected $delay_actual;
此外,虽然严重不太严重,但我必须手动将其设置为表单类型中不需要,尽管事实上我正在使用猜测:
->add('delay_actual', null, [
'required' => false,
'label_format' => 'delay.delay_act'
])
表单在AJAX控制器操作中处理,没有任何额外的操作(即每个字段直接绑定到实体)。表单在其自己的Twig模板中显示如下:
{{ form_start(form) }}
{{ form_end(form) }}
我尝试从属性中移除@Assert\Type("integer")
,但这没有用。我还尝试添加@Assert\Blank()
只是为了看看它会产生什么影响,它确实阻止了NotBlank错误,但显然这不是一个真正的解决方案。
无论如何,在使用Symfony平台时,在表单中有一个简单的可选字段应该是一件很痛苦的事。任何人都知道我可能会缺少什么?
更新:这最终通过更新Symfony来解决,证明它是由框架中的错误引起的。