我正在使用Symfony2來設置一個窗體,其中可以編輯窗體實體。
一個書架包含可讀實體集合(例如Book,Magazine等 - 全部從Readable繼承)。
用戶可以添加更多可讀實體(表單通過JavaScript進行擴展),並且可以從下拉列表中選擇他想要添加的可讀類型。根據所選的下拉值,呈現不同的表單字段。到現在爲止還挺好。Symfony2:表單提交時的實體實例化取決於用戶選擇
現在,當表單提交給服務器時,根據表單中選擇的Readable-Type用戶,應該實例化不同的實體類型。 如果我什麼都不做,Symfony只是實例化基類Readable(而不是Book,Magazine等)。
如何告訴Symfony根據從下拉列表中選擇的值實例化正確類型的Readable?
我試着用FormEvent-監聽器,但是:
- 在PRE_SUBMIT我只得到含$事件 - 「原始」 形態的數據數組>的getData(),即無實體已被instatiated至今。但是,在這個階段,我仍然可以獲得下拉的價值。
- in SUBMIT表單數據已被分配給適當的實體。此外,新的Readable已經與基本的Readable-Class一起安裝。但現在,我無法訪問下拉菜單中的值。
這樣做的正確方法是什麼?
編輯
添加了保質FormType最小的代碼示例:
https://gist.github.com/anonymous/401495b701982adafb96
代碼infinite_form_polycollection:
https://gist.github.com/anonymous/b5f0ed10ca9c52177f01
你可以提供一堆你的代碼,請斯蒂芬? –
我不確定,你想要哪個代碼 - 我在上面添加了一些Shelf FormType代碼。如果你想要別的東西,請說出來。 – Stefan
抱歉抱歉,但您有沒有機會查看代碼? – Stefan