Symfony 3 - 静态 CollectionType children 未显示

Symfony 3 - static CollectionType children not showing up

我正在 Symfony 3.1.3 中处理一个表单,想使用 CollectionType 添加动态数量的复选框。在我的 Type-class 的 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'));,复选框会显示在 CollectionTypechildrenunresolvedChildren 属性中。后来我在关联的模板中调用 {{ 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,
        ));
    }