我有一个带有多个复选框列表的表单(动态准备选项列表)。我希望从头开始选择它们(以便用户可以取消选中它们)。我准备了一个带有选项和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();
答案 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%}