我的表单类型包含多个字段。一个字段是自定义表单类型,它本身也包含多个字段。我无法更改子类型,因为它在其他地方使用。
我只想显示当前不为空的字段,但我还没有找到办法。我试图将它们隐藏在树枝模板上 - 如果没有渲染它们,如果值不为空 - 但随后它们被提交为空,所以先前设置的值现在未设置。
如何有效地使用表单类型的一部分?
编辑以澄清:
说我有一个包含字段OrderType
和orderNumber
的课程identifiers
。标识符为ItentifiersType
,其中包含字段invoiceNumber
,name
,purchaseDate
和serialNumber
。
我正在尝试创建的页面应该只显示缺少的数据。如果数据库中已存在orderNumber
和purchaseDate
的值,我只想显示invoiceNumber
和serialNumber
的输入字段。
$builder->add('identifiers', 'collection', [
'type' => new IdentifierType(),
'allow_add' => true
])->add('orderNumber', 'int');
答案 0 :(得分:0)
以下是我解决问题的方法。到达identifiers
字段内的字段有点尴尬,但它的工作和表单处理按预期工作。
/* Removed non-empty fields from the form */
$builder->addEventListener(
FormEvents::POST_SET_DATA,
function (FormEvent $event) {
$form = $event->getForm();
$identifiers = $form->get('identifiers');
foreach ($identifiers->all()[0]->all() as $identifier) {
if ($identifier->getData() != null) {
$identifiers->all()[0]->remove($identifier->getName());
}
}
});