2017-01-16 60 views
0

我試圖創建一個特殊的窗體,首先我有一個關於專業的窗體,它有作爲一個屬性的經驗。我將這些值添加到我的表單中:Symofony building subform

$builder->add('job_company'); 
$builder->add('job_position'); 

問題是我希望能夠通過按鈕生成多種體驗。 我應該使用symphony的CollectionType,但我不知道是否需要爲體驗創建另一個特殊的表單,所以當我單擊按鈕時,我使用不同的名稱創建了這些輸入(如果我想驗證他們)。

我試着使用:

->add('experiences', CollectionType::class, array(
     'entry_type' => TextType::class, 
     'allow_add' => true, 
     'allow_delete' => true, 
    )) 

但是,當我嘗試呈現它({{ form_widget(form.experiences)}}),我得到這些錯誤:

AppBundle\Entity\ProfessionalExperience could not be converted to string

我也試過({{ form_widget(form.experiences.company)}}),但我不會得到這個變量。

我該如何正確地做到這一點?

謝謝你的幫助。

回答

1

你已經宣佈你experiences子窗體TextType,因此

{{ form_widget(form.experiences)}} 

正試圖創建一個簡單的<input/>場並將其值設置。在您提供AppBundle\Entity\ProfessionalExperience實例時,輸入的值是一個簡單的字符串。這就是你得到這個錯誤的原因。

你不希望它是TextType。它應該是某種自定義表單類,如ExperienceType

->add('experiences', CollectionType::class, array(
     'entry_type' => ExperienceType::class, 
     'allow_add' => true, 
     'allow_delete' => true, 
    )) 

而且你當然應該創建爲您AppBundle\Entity\ProfessionalExperience實體合適的領域,窗體類

+0

它可以完美的感謝你 –