选择多个选项不起作用

时间:2013-07-12 12:50:48

标签: forms symfony

我有一个带有多个复选框列表的表单(动态准备选项列表)。我希望从头开始选择它们(以便用户可以取消选中它们)。我准备了一个带有选项和checked_choices的数组,但在表单渲染过程中只选择了第一个复选框。有关如何修复它的任何建议吗?

$choices = array();
$choices_check= array();
foreach($user[0]->getShops() as $shop)
{
    $choices[$shop->getId()] = $shop->getName();

    $choices_check[] = true;
}
//return $this->render('GLPolicyBundle:Policy:tmp.html.twig', array('entities' => var_dump($choices_p)));

$searchby = array();
$form = $this->createFormBuilder($searchby)
        ->add('shop', 'choice', array('choices' => $choices,

                                    'multiple' => true,
                                    'expanded' => true,
                                    'required' => true,
                                    'data' => $choices_check)                
            )
        ->add('date_from', 'date', array('data' => $date_from))
        ->add('date_to', 'date', array('data' => new \DateTime()))
        ->getForm();

2 个答案:

答案 0 :(得分:2)

数据需要是一个数组,其值是您想要选择的选项的关键。

将$ choices_check [] = true更改为以下内容应该这样做。

$choices_check[] = $shop->getId();

请注意,在POST表单后,$ form-> getData()的格式相同。

答案 1 :(得分:1)

解决方案是在Twig视图中设置checked属性:

  

{%for shop in form.shop%}

     

{{form_label(shop)}}

     

{{form_widget(shop,{'attr':{'checked':'checked'}}}}}

     

{%endfor%}