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



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

   /**
    * @ORMManyToOne(targetEntity="TwitterSearch", cascade={"persist"})
    * @ORMJoinColumn(name="twitter_search_id", referencedColumnName="id")
    */
    private $twitterSearch;

这是我在事件类型中设置关系的方式:

    $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的实例?

请改用实体类型。

例:

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

最新更新