Symfony 构建子表单
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)}}
)但是我无法得到这个变量。
我怎样才能正确地做到这一点?
感谢您的帮助。
您已声明您的 experiences
子表单是 TextType
,因此
{{ form_widget(form.experiences)}}
正在尝试创建一个简单的 <input/>
字段并设置其值。当您提供 AppBundle\Entity\ProfessionalExperience
实例时,输入的值是一个简单的字符串。这就是您收到此错误的原因。
您不希望它成为 TextType
。它应该是某种自定义形式 class,例如 ExperienceType
。
->add('experiences', CollectionType::class, array(
'entry_type' => ExperienceType::class,
'allow_add' => true,
'allow_delete' => true,
))
您当然应该创建这样的表单 class,其中的字段适合您的 AppBundle\Entity\ProfessionalExperience
实体
我正在尝试创建一个特殊的表格,首先我有一个关于专业的表格,并且它有作为属性的经验。我将这些值添加到我的表单中:
$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)}}
)但是我无法得到这个变量。
我怎样才能正确地做到这一点?
感谢您的帮助。
您已声明您的 experiences
子表单是 TextType
,因此
{{ form_widget(form.experiences)}}
正在尝试创建一个简单的 <input/>
字段并设置其值。当您提供 AppBundle\Entity\ProfessionalExperience
实例时,输入的值是一个简单的字符串。这就是您收到此错误的原因。
您不希望它成为 TextType
。它应该是某种自定义形式 class,例如 ExperienceType
。
->add('experiences', CollectionType::class, array(
'entry_type' => ExperienceType::class,
'allow_add' => true,
'allow_delete' => true,
))
您当然应该创建这样的表单 class,其中的字段适合您的 AppBundle\Entity\ProfessionalExperience
实体