2014-01-09 43 views
1

我有這個Symfony窗​​體與ManyToMany關係正常工作,它顯示實體Party上的屬性爲name的所有參與方。symfony2實體選擇標記顯示

提交後,它會根據所選方查詢數據庫並檢索邀請參與這些方的人員。

public function buildForm(FormBuilderInterface $builder, array $options) { 
    $builder 
      ->add('parties', 'entity', array(
       'class' => 'ProtoBundle:Party', 
       'multiple' => true, 
       'expanded' => false, 
       'property' => 'name', 
       'required' => false,)); 
} 

與參數

'multiple' => 'true, 

各方在選擇下拉框(不是我想要的)都顯示在同一時間。

我要的是剛剛與參數

'empty_value' => 'choose a party' 

一個選擇標記,那麼當用戶點擊它時,顯示值。其實我能做到這一點與參數

'multiple'=> false, 

但問題是,我收到此錯誤信息:

無論是財產「當事人」也沒有的方法「setParties()」一「 __set()「或」__call()「存在並且在類」Acme \ ProtoBundle \ Entity \ Person「中具有公共訪問權限。

有誰知道如何使這個選擇標籤工作,並給我一個詳細的解決方案?

回答

1

首先,你應該考慮到,如果你真的需要多對多的關係,當你想要簡單的選擇框沒有多個選擇。

但是......

在實體你必須檢查是否值正在添加陣列是,這就是它:

public function setParties($parties) 
{ 
    if (!is_array($parties)) { 
     $parties = array($parties); 
    } 
    $this->parties = $parties; 
} 
+0

比你大哥。你真的幫了我!它完美的作品! – Albee