2015-06-11 29 views
1

我有一個使用學說的ObjectSelect使下拉錯誤的數據類型爲上原則ObjectSelect引用的實體

$this->add(array(
     'name' => 'category', 
     'type' => 'DoctrineModule\Form\Element\ObjectSelect', 
     'options' => array(
      'label' => 'Category', 
      'object_manager' => $em, 
      'target_class' => 'Blog\Entity\Category', 
      'property' => 'name' 
     ), 
     'attributes' => array(
      'required' => true 
     ) 
)); 

這個問題我有一個形式,這應該引用其他實體的id,howeve它不斷拋出 「對於關聯字段」Blog \ Entity \ Post#$ category「,」Blog \ Entity \ Category「類型的期望值,而不是」string「。

here's從表單中的var_dump,重要的部分

object(Zend\InputFilter\InputFilter)[337] 
    protected 'factory' => null 
    protected 'data' => 
    array (size=5) 
     'id' => string '' (length=0) 
     'title' => string 'asdasd' (length=6) 
     'content' => string '<p>asdasd</p>' (length=13) 
     'category' => string '3' (length=1) 
     'submit' => string 'Add' (length=3) 

和我的addAction

public function addAction() 
{ 
    $form = new PostForm($this->getEntityManager()); 
    $form->setHydrator(new DoctrineEntity($this->getEntityManager(),'Blog\Entity\Post')); 

    $form->get('submit')->setValue('Add'); 

    $request = $this->getRequest(); 
    if ($request->isPost()) { 
     $post = new Post(); 
     $form->setInputFilter($post->getInputFilter()); 
     $form->setData($request->getPost()); 

     $form->isValid(); 
     //debug 
     var_dump($post); 

     $post->exchangeArray($form->getData()); 
     $em = $this->getEntityManager(); 
     $em->persist($post); 
     $em->flush(); 
     $this->flashMessenger()->addSuccessMessage('Post Saved'); 
     return $this->redirect()->toRoute('post'); 
    } 
    return new ViewModel(array(
     'post' => $post, 
     'form' => $form 
    )); 
} 

我將如何解決這個問題,我不明白它如何不抱怨關於ID,但它爲此。

更新**類實體ORM anotations

/** 
* 
* @ORM\ManyToOne(targetEntity="Category") 
* @ORM\JoinColumn(name="category_id", referencedColumnName="id") 
*/ 
private $category; 

回答

0

什麼是對這個字段集的水化設置?

例如;

$this->setHydrator(new DoctrineHydrator($em, 'Blog\Entity\Category')) 
      ->setObject(
       new Category() 
      ); 
+0

在我的addAction –

+0

真正的問題是,我不知道我是否應該只是更改數據庫的數據類型爲varchar或編輯後的實體來告訴ORM它是一個整數。 –

+0

那麼你的水化器設置是否設置?嘗試在fieldset中設置它們,或者如果您可以爲FORM處理提供一個addAction的示例,那將非常棒。 –

相關問題