0
我需要創建一個窗體來創建同一個實體的集合,但我不想重複收集每個條目的所有字段(只有字段會有不同值)。Symfony窗體創建實體的集合共享輸入
試想一個Product
實體:
class Product
{
private $category;
private $name;
private $price;
}
我想一個形式在同一時間創建相同category
的多個Product
實體。 所以形式應該有一個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
)
謝謝!
這是我提供的一個非常基本的例子,但在我的實際使用情況中,這不僅僅涉及一個領域,而且我希望保留我放在所有領域的實體的約束條件。我希望有由symfony的用於此用途的情況下提供的東西。 – Seb33300
那麼你可以額外的產品,使這形式只需要類別字段。現在,您可以獲得產品::類別的所有約束條件,包括原理,Symfony表單等。 「爲一組對象使用一個表單域」是一個相當不受歡迎的用例。充分利用一下就可以了,但是你一定要想到妥協,一些額外的工作。 – JasonGabler