在Symfony中,如何显示和提交表单类型的一部分

时间:2015-11-13 10:17:54

标签: php forms symfony

我的表单类型包含多个字段。一个字段是自定义表单类型,它本身也包含多个字段。我无法更改子类型,因为它在其他地方使用。

我只想显示当前不为空的字段,但我还没有找到办法。我试图将它们隐藏在树枝模板上 - 如果没有渲染它们,如果值不为空 - 但随后它们被提交为空,所以先前设置的值现在未设置。

如何有效地使用表单类型的一部分?

编辑以澄清:

说我有一个包含字段OrderTypeorderNumber的课程identifiers。标识符为ItentifiersType,其中包含字段invoiceNumbernamepurchaseDateserialNumber

我正在尝试创建的页面应该只显示缺少的数据。如果数据库中已存在orderNumberpurchaseDate的值,我只想显示invoiceNumberserialNumber的输入字段。

$builder->add('identifiers', 'collection', [
    'type' => new IdentifierType(),
    'allow_add' => true
])->add('orderNumber', 'int');

1 个答案:

答案 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());
                }
            }
    });