Symfony形式:formtype字段的集合未映射

问题描述 投票:0回答:1

考虑以下架构

entityA
{
    entityB [12]
}

entityB
{
    entityC[]
}

entityC
{
   name, defaultValue
}

当创建一个entityA的新对象时,我想列出数据库中的每个entityC,以便能够选择它们并自定义defaultValue,如下所示:

CHECKBOX [x] LABEL name1, INPUT defaultValue1
CHECKBOX [ ] LABEL name2, INPUT defaultValue2
CHECKBOX [x] LABEL name3, INPUT defaultValue3
CHECKBOX [x] LABEL name4, INPUT defaultValue4
etc

...目的是根据上述选择,在此新entityA的12个entityB对象的每一个中自动生成entityC对象

->add('categories', CollectionType::class, [
    "mapped" => false,
    'entry_type'    => SharedCategoryType::class
])

使用类别(entityC)作为实体类型不起作用,因为我也想公开默认值。这是SharedCategoryType

class SharedCategoryType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('enabled', CheckboxType::class, [
                "mapped" => false
            ])
            ->add('name' , TextType::class) //not a label but not important for now
            ->add('defaultValue' , MoneyType::class); 
    }
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Category::class,
        ]);
    }
}

使用此代码,映射无法正常工作,但我不知道缺少什么...

编辑:我的第一次尝试是这样的:

->add('budgets', EntityType::class, [
            "class" => Category::class,
            "mapped" => false,
            "multiple" => true,
            "expanded" => true
}

但是我不能修改defaultValue字段。它会根据名称自动创建标签(使用我可能定义的__toString方法),但是我找不到如何将defaultValue添加到公开的字段中。

考虑以下架构,实体A {实体B [12]}实体B {实体C []}实体C {名称,默认值}创建实体A的新对象时,我想列出每个实体C ...

symfony symfony-forms
1个回答
0
投票
如果创建相关实体,则可以使用表单事件,例如
© www.soinside.com 2019 - 2024. All rights reserved.