我正在Symfony 3.1.3的窗体上工作,并希望使用CollectionType
添加动态数量的复选框。在Type
类的buildForm
方法中,我使用此代码添加复选框:
$builder->add('levels', CollectionType::class, array(
'entry_type' => CheckboxType::class,
'mapped' => false,
));
foreach($levels as $level) {
$name = 'level_cb_'.$level['name'];
$builder->get('levels')->add($name, CheckboxType::class, array(
'label' => $level['name'],
'required' => false,
'mapped' => false,
));
}
如果我调用var_dump($builder->get('levels'));
之后立即复选框显示在CollectionType
的children
和unresolvedChildren
属性。后来我在相关的模板中调用{{ dump(form.levels) }}
,它显示children
属性是空的。
我错过了什么明显的吗?
所以似乎集合的子元素在添加到我的自定义类型和在控制器中可用的表单之间被清除。
我把代码添加复选框到控制器,突然一切工作如预期。也许有人知道这背后的原因。
在我的specialtype。php中我只写了:
$builder->add('levels', CollectionType::class, array(
'entry_type' => CheckboxType::class,
'required' => false,
'mapped' => false,
));
在我的specialformcontroller。php中有:
$form = $this->createForm(SpecialType::class, $entity);
foreach($levels as $level) {
$name = 'level_cb_'.$level['name'];
$form->get('levels')->add($name, CheckboxType::class, array(
'label' => $level['name'],
'required' => false,
'mapped' => false,
));
}