同じエンティティのコレクションを作成するフォームを作成する必要がありますが、コレクションの各エントリのすべてのフィールドを繰り返す必要はありません(異なる値)。私は同時に同じcategory
の複数Product
エンティティを作成するためのフォームを希望入力を共有するエンティティのコレクションを作成するためのsymfonyフォーム
class Product
{
private $category;
private $name;
private $price;
}
:
はProduct
実体を想像してみてください。 フォームにはcategory
フィールドが1つあり、コレクションは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
のみ)
ありがとう!
これは私が提供している非常に基本的な例ですが、実際の使用例ではこれは1つのフィールドだけではなく、すべてのフィールドで自分のエンティティに適用する制約を利用したいと考えています。私はsymfonyがこのユースケースのために意図したものがあることを期待していました。 – Seb33300
追加の製品をインスタンス化してフォームにカテゴリフィールドのみを必要とするようにすることができます。 Doctrine、SymfonyフォームなどのProduct :: categoryのすべての制約を取得しました。 「オブジェクトのセットに1つのフォームフィールドを使用する」は、かなり慣れ親しみのないパスの使用例です。あなたができることを活かすが、妥協といくつかの余分な仕事を期待しなければならない。 – JasonGabler