2012-06-06 57 views
0

我在symfony中的表單有問題。Symfony 2添加數組中的選擇

第一代碼:

$test = array(); 
    foreach($docGrp as $dc){ 
     $test[] = $dc->getGruppenName(); 
    } 
    $form = $this->createFormbuilder($document) 
     ->add('gruppe', 'choice', array(
     'choices' =>array(
      'Gruppen' => $test, 
     ), 
     'multiple' => true, 
     'expanded' => true, 
    )) 
     ->getForm(); 

我想,該陣列被顯示爲複選框和它的值應該是在陣列中的值。不過,我得到一個異常,說

警告「異常被模板的渲染(期間拋出」:)strtr函數的效率(預計參數1是字符串數組給定」

所以,如果我改變選擇以「GRUPPEN =>‘測試’它的工作原理,但它違背了目的,我需要得到這些值從數組中。

如果有人知道我的意思,幫助將是很酷的:)

到目前爲止 Adi

回答

3

問題在於你通過表單傳遞選擇的方式。因爲$ test是一個數組,你實際上是通過一個2d數組作爲選項的選項,例如數組('Gruppen'=> array(....)),這是不允許的。

我在使用Symfony中的多選部件時看到過2d陣列工作。隨着維度的增長,小部件會縮小選擇的位置。但它不適用於複選框。 你想要做的是傳似數組:

$countries = array(
    'au' => 'Australia', 
    'at' => 'Austria', 
    'az' => 'Azerbaijan', 
    ... 
); 

當數組鍵的值。

$form = $this->createFormbuilder($document) 
    ->add('country_code', 'choice', array(
     'choices' => $countries 
     'multiple' => true, 
     'expanded' => true, 
    ) 
); 
+0

噢,我的上帝,我現在..您的幫助,先生,我尋找一個解決辦法2小時,由於它是簡單的感覺如此愚蠢!我不能夠感謝你! – Adi

3

試試這個代碼:

foreach($docGrp as $dc) 
{ 
    $test[] = array($dc->getGruppenID()=>$dc->getGruppenName()); 
} 

$form = $this->createFormbuilder($document) 
    ->add('gruppe', 'choice', 
     array('choices' =>$test 
    ), 
    'multiple' => true, 
    'expanded' => true, 

)) 
    ->getForm();