2012-06-06 109 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();