2017-01-16 55 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

它可以完美的感谢你 –