Symfony 3 子表单作为数组而不是实体提交

Symfony 3 subform submitted as array instead of entity

我正在将项目从 Symfony 2 转换到 Symfony 3,运行 遇到了问题。我有一个事件实体,它有一个 TwitterSearch 实体,它由 Event.php 中的以下内容定义:

   /**
    * @ORM\ManyToOne(targetEntity="TwitterSearch", cascade={"persist"})
    * @ORM\JoinColumn(name="twitter_search_id", referencedColumnName="id")
    */
    private $twitterSearch;

这就是我在 EventType 中设置关系的方式:

    $builder->add('twitterSearch', TwitterSearchType::class, array(
        'required'=>false,
    ));

这是提交表单时来自控制器的代码:

    $entity = new Event();
    $form = $this->createCreateForm($entity);
    $form->handleRequest($request);

    if ($form->isValid()) { 
       $entity = $form->getData();
       $em = $this->getDoctrine()->getManager();
       $em->persist($entity);
       $em->flush();
    }

这曾经在 Symfony 2 中有效,但现在当提交表单时会抛出以下错误:

Expected value of type "TwitterSearch" for association field "Event#$twitterSearch"
, got "array" instead.

我调试了代码,事件的 twitterSearch 属性是数组。有谁知道为什么它不再将其转换为 TwitterSearch 的实例?

改用EntityType

示例:

$builder->add('twitterSearch', EntityType::class, array(
    'class' => TwitterSearch::class,
    'choice_label' => 'name',
));