Symfony 2从数组中添加选项

时间:2012-06-06 11:39:37

标签: forms symfony

我的symfony表格有问题。

首先是代码:

$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 =>”测试“它可以工作。但它失败了目的,我需要从数组中获取这些值。

如果有人知道我的意思,帮助会很酷:)

到目前为止 阿迪

2 个答案:

答案 0 :(得分:3)

问题在于您在表单中传递选项的方式。因为$ test是一个数组,你实际上是通过一个2d数组作为选项选项,例如array('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,
    )
);

答案 1 :(得分: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();