考虑以下架构
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 ...