Symfony 3 - 静态CollectionType子元素未显示

3

我正在使用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'));,则复选框将显示在CollectionTypechildrenunresolvedChildren属性中。稍后我在相关模板中调用{{ dump(form.levels) }},它会告诉我children属性为空。我是否遗漏了一些明显的东西?
1个回答

0

看起来集合的子项在被添加到我的自定义类型中和表单在控制器中可用之间的某个地方被清除了。

我将添加复选框的代码放入控制器中,突然一切都按预期工作了。也许有人知道背后的原因。

所以在我的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,
        ));
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接