Symfony 未映射的实体表单字段没有数据

Symfony unmapped entity form field not having data

在 Symfony 2.6 中,我使用的是未映射的实体表单类型:

$form
->add(
    'myEntity', // Form field name
    'entity',
    [
        'mapped' => false, // Not mapped
        'class' => 'MyVendor\MyBundle\Entity\MyEntity',
        'choices' => $MyEntityCollection, // list of MyEntity
        'property' => 'name',
        'empty_value' => 'Please select MyEntity',
        'empty_data' => null,
        'attr' => [
            'label' => 'My label'
        ]
    ]
);

这允许用户正确地 select MyEntity 的项目或将其留空。据此,如果有任何值被 selected,我将添加一个 EventSubscriber 来修改 preSubmitted 数据,如果没有做出选择,则保持原样。

这是事件订阅者:

/**
 * {@inheritdoc}
 */
public static function getSubscribedEvents()
{
    return [
        FormEvents::PRE_SUBMIT => 'preSubmitData'
    ];
}

/**
 * @param FormEvent $event
 */
public function preSubmitData(FormEvent $event)
{
    if( null === ($entity = $event->getForm()->get( 'myEntity' )->getData() ) ){
        return;
    }

    // Set value if field has been defined
    $event
        ->getForm()
        ->setData( $entity )
    ;
}

如果用户 select 的选择不是空白,当我调试 preSubmitData 函数时:

我的问题是:

提前致谢!

编辑

为了全局,在我的全局表单中(此处未描述的其他字段)我有 2 个依赖字段:

希望现在更清晰了。

好的,它给出了 null,因为我们在 preSubmit 事件中,这里发送的数据还没有映射到一个实体中。

将事件更改为 提交 根据需要提供映射实体。