2015-10-05 76 views
0

是否可以將不同類型的表單動態嵌入到單個集合中?如何創建不同類型表單的集合?

假設我有一個文檔(使用ODM)與一些嵌入式文檔。這些文件我需要爲他們創建一個單獨的表單。到目前爲止,這是可以的。但是我怎樣才能將它們放在表單的集合類型中,這樣我就可以執行表單的自動添加和刪除操作了?

或者我可以手動做,沒問題,但我可以在哪裏放我的代碼?在表單上調用bindRequest之後?是否有機會從表單中刪除已刪除的項目,因爲有可能我不會傳遞isValid方法。

而我迄今爲止所瞭解的是,在創建後如何修改表單沒有辦法。我有一個抽象表單生成器,我在其中添加這些嵌入式文檔。它不是一個集合,而是單獨的表單,因爲每個文檔都有它自己的表單類型。這是正確的方法還是我錯了?

感謝您的任何修正或建議

回答

0

這聽起來像你會給你所有的嵌入文檔的形式,然後添加爲收藏的「父」的形式爲您的文檔。通過這種方式,您的頂級表單就成爲您可以從中獲取嵌入數據的「集合」。

所以,如果你的文檔是A

class AType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $this->add('b', 'collection', [ 
      'type' => new BType(), 
      'allow_add' => true, 
      'allow_delete' => true, 
     ])->add('c', 'collection', [ 
      'type' => new CType(), 
      'allow_add' => true, 
      'allow_delete' => true, 
     ])->add('d', 'collection', [ 
      'type' => new DType(), 
      'allow_add' => true, 
      'allow_delete' => true, 
     ]); 
    } 
} 

形式更適合你的數據模型有效剛剛互動意見,這聽起來像前進的方向,除非有什麼東西從做這種方式阻止你?

+0

我已經調整了你的解決方案,它幾乎可以工作,但是我試圖添加到集合中的最後一級孩子被標記爲未解決。 –

+0

我不確定在這種情況下「標記爲未解決」是指未填充的字段? –

相關問題