我需要创建一个表单来创建同一个实体的集合,但我不想为集合的每个条目重复所有字段(只有具有不同值的字段)。
想象一个Product
实体:
class Product
{
private $category;
private $name;
private $price;
}
我希望表单能够同时创建同一Product
个多个category
个实体。
因此,表单应包含一个category
字段,以及name
和price
的集合。
我的表单看起来像:
class ProductCollectionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('category')
->add('products', CollectionType::class, array(
'entry_type' => ProductType::class,
'allow_add' => true,
'mapped' => false,
))
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Product::class,
));
}
}
class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('price')
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Product::class,
));
}
}
任何人都知道是否有办法自动用父字段填充集合类型中的所有实体? (此示例中仅category
)
谢谢!
答案 0 :(得分:0)
我会通过为产品提供不需要类别成员价值的表格来解决这个问题。然后创建一个未映射的字段以接收类别值。在提交后返回控制器后,将未映射的类别值应用于每个产品实体,然后处理/持久化/等。
结帐Symfony Forms page,搜索“已映射”,您将看到如何将未映射的字段添加到表单。