0

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

$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();
4

2 回答 2

2

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

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

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

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

于 2013-07-12T21:54:26.487 回答
1

一种解决方案是在 Twig 视图中设置选中的属性:

{% for shop in form.shop %}

{{ form_label(shop) }}

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

{% endfor %}

于 2013-07-12T17:28:29.413 回答