【问题标题】:Symfony 3 - static CollectionType children not showing upSymfony 3 - 静态 CollectionType 孩子没有出现
【发布时间】:2016-08-22 07:39:56
【问题描述】:

我正在处理 Symfony 3.1.3 中的表单,并希望使用 CollectionType 添加动态数量的复选框。在我的Type-class 的buildForm-method 中,我使用此代码添加复选框:

    $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 属性为空。

我是否遗漏了一些明显的东西?

【问题讨论】:

    标签: php symfony symfony-forms


    【解决方案1】:

    因此,似乎集合的子项在添加到我的自定义类型和在控制器中可用的表单之间的某个地方被清除。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多