讓我們想象一下這2個實體:形式 - 管理一對多集合元素
ShoppingCart
creationDate
Item
name
shoppingCart # ManyToOne
我管理ShoppingCart
的形式與Items
public function buildForm(FormBuilderInterface $builder, array $options)
{
// ...
$builder
// ...
->add('items', CollectionType::class, array(
'entry_type' => ItemFormType::class,
// ...
}
一個CollectionType
我想我的用戶能夠添加/刪除項目,這對我來說似乎是一個相當普遍的需求。
如果我沒理解好,這裏是我必須做的:
- 定義
ShoppingCart
關係的反向OneToMany
方Item
- 確保這種關係有
cascade={"persist"}
和orphanRemoval=true
選項 - 將此項
Collection
初始化爲構造函數 - 將
allow_add
和allow_delete
表單選項設置爲真正 - 將
by_reference
形式選項假 - 確保
andItem()
&removeItem()
功能被實現爲ShoppingCart
- 設置/取消擁有方關係除了添加
ShoppingCart
/刪除Item
從ShoppingCart
items collection - 保存javascript中的集合索引,使Doctrine可以跟蹤引用
我忘了什麼嗎?
我發現它就在屁股大的痛苦,我比需要和其他框架/奧姆斯
有沒有辦法做到這一點更簡單?
你沒有提到什麼問題。有沒有工作? –
Doc會確認您的所有項目(或不):http://symfony.com/doc/current/form/form_collections.html – DOZ
@dragoste問題是*並不簡單嗎?*但我會改變所以它更加明確。@DOZ我知道這個文檔的心臟(只有'orphanRemoval'提到丟失) –