2016-03-16 48 views
0

我想不能多選一個組選擇,但我得到的錯誤:Symfony3:添加「多」選項上分組ChoiceType

「無法爲屬性路徑轉換值‘destinataires’:預期的數組「。

代碼:

foreach ($manager->getRepository('CommonBundle:Compte')->findAll() as $value) 
     $arrayCompte[$value->getPseudo()] = $value->getPseudo(); 

    foreach ($manager->getRepository('CommonBundle:Profil')->findAll() as $value) 
     $arrayProfil[$value->getNom()] = $value->getNom(); 

    $arrayDestinataires['Profil'] = $arrayProfil; 
    $arrayDestinataires['Compte'] = $arrayCompte; 

    $ticketForm = $this->createFormBuilder($ticket) 
    ->add('priorite',  ChoiceType::class, array(
     'multiple' => true, // working 
     'choices' => array(
      'Faible' => 0, 
      'Moyen' => 1, 
      'Fort' => 2))) 
    ->add('destinataires', ChoiceType::class, array(
     'multiple' => true, //not working 
     'choices' => $arrayDestinataires)) 

注意,如果沒有 「'多'=>真實,」 它的工作原理。

請注意,一些選項如「」展開'=> true「,有效。

編輯: 變量'destinataires'是一個ManyToMany關係。顯然這就是爲什麼我得到一個錯誤。

我需要創建一個自定義fromBuilder重載這部分,並在我身邊處理它。

回答

0

的問題是,「destinataires」是一個多對多關係到「孔特」的對象,我想補充的「PROFIL」實體快捷鍵的用戶。 爲了解決這個問題,我在我的實體中添加了一個數組變量來存儲表單結果並使用它。

0

這意味着數組$ arrayDestinataires不能被渲染爲選擇列表。至於我可以在你的代碼中看到,這將是你的陣列的最終結果

$arrayDestinataires = array(
    'Profil' => array (.....), 
    'Compte' => array (.....) 
) 

,只要你想這種結構不能被渲染,因爲PROFIL和孔特可能是值,但相應的陣列可以」 t被轉換爲字符串。

希望這對你有所幫助。

+0

一些研製後,我發現這不是我的變量發送到形式塊,但可變託管。 'destinataires'是一個關係ManyToMany。所以知道我需要找出如何處理這個... ^^ –