2016-02-25 42 views
1

有沒有一種方法可以用CollectionType創建表單並添加不同的原型。Symfony窗​​體:具有不同原型的CollectionType

背景:我想構建一個「Pagebuilder」。 功能就像這樣,但我必須將它集成到現有的應用程序中。

Pagebuilder with SuluCMF

所以我必須添加不同的原型。不同的原型可以通過選擇字段進行切換。

應該有多種形式與不同的表單域。 E.G.一個

  • 鏈接到產品
  • 的單所見即所得元素
  • 與元數據
  • 等圖像...

的形式應該是儘可能地爲用戶那樣簡單。 所以我需要添加多個原型的可能性。

這已經是可能的(以及如何)?

+0

你想把這個表格整合到Sulu Admin嗎?或者,這是一個完整的獨立應用程序,截圖僅僅是你想要的可視化? –

+0

這只是一個可視化。我喜歡蘇祿的那種,並且希望能夠連續添加n種不同的類型,同時保持順序和不同的類型。到目前爲止,我最關心的是對不同類型的驗證。 我可以做到這一點手動布特有希望自動化它像在CollectionType中的某種方式。 – psren

回答

0

編輯:雖然你的問題是關於CollectionType的,但仔細查看截圖後,我認爲你只需要創建一個具有多個子窗體的主窗體,並根據用戶選擇顯示適當的子窗體(使用javascript)。

+0

但我如何完成混合類型?所以它通過正確的子表單來驗證表單(使用原型添加了js)? – psren

+0

您不需要使用原型功能,只是因爲您的表單是動態的,並且它的某些部分被javascript隱藏/顯示。 – Karolis

0

如果你堅持要用CollectionType(我沒有看到在你的屏幕截圖的一個原因),那麼你可以這樣做:

$builder->add('entity1', CollectionType::class, [ 
     'label' => 'entity.recipe.entity1', 
     'entry_type' => \AppBundle\Form\Type\Entity1Type::class, 
     'allow_add' => true, 
     'allow_delete' => true, 
     'prototype' => true, 
     'prototype_name' => '__EntityId__', 
     'entry_options' => ['required' => false], 
     ]); 

    $builder->add('entity2', CollectionType::class, [ 
     'label' => 'entity.recipe.entity2', 
     'entry_type' => \AppBundle\Form\Type\Entity2Type::class, 
     'allow_add' => true, 
     'allow_delete' => true, 
     'prototype' => true, 
     'prototype_name' => '__EntityId__', 
     'entry_options' => ['required' => false], 
     ]); 
... 

,只要你想添加儘可能多的實體類型,每將成爲一個包含零個或多個項目的集合。