2017-06-22 20 views
0

我正在將一個項目從Symfony 2轉換爲Symfony 3,並且遇到了問題。我有一個具有通過以下的Event.php定義的TwitterSearch實體事件實體:作爲數組而不是實體提交的Symfony 3子表單

/** 
    * @ORM\ManyToOne(targetEntity="TwitterSearch", cascade={"persist"}) 
    * @ORM\JoinColumn(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屬性的事件是和數組。有誰知道爲什麼它不再將其轉換爲TwitterSearch實例?

回答

1

改爲使用EntityType

實施例:

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

優秀,感謝該:-) – dk80