我试图创建一个特殊形式,首先我有一个关于专业人士的表格,并且它具有作为财产的经验。我将这些值添加到表单中:
$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无法转换为字符串
我也试过({{ form_widget(form.experiences.company)}}
),但我无法得到这个变量。
我该怎么做呢?
感谢您的帮助。
答案 0 :(得分: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
实体