Php 表单生成器中的symfony实体文本输入?

Php 表单生成器中的symfony实体文本输入?,php,symfony,Php,Symfony,我在symfony有两个实体: 第一个“用户”实体具有$addresses属性,该属性是与第二个实体的一对多关系,该实体命名为“UserAddresses”,并带有字段:$id、$address(string)。 我想使用symfony form builder为我的网站创建注册页面,我想为用户输入文本,以便在注册页面中将他的地址添加到他的帐户中。当我使用: $builder->add('addresses', 'entity', array( 'class' => 'XXX

我在symfony有两个实体: 第一个“用户”实体具有$addresses属性,该属性是与第二个实体的一对多关系,该实体命名为“UserAddresses”,并带有字段:$id、$address(string)。 我想使用symfony form builder为我的网站创建注册页面,我想为用户输入文本,以便在注册页面中将他的地址添加到他的帐户中。当我使用:

$builder->add('addresses', 'entity', array(
    'class' => 'XXX\UserBundle\Entity\UserAddresses',
    'property' => 'address',
    'label' => 'label.address',
    'mapped' => false,
    'translation_domain' => 'labels'))
;
我看到一个显示用户地址的输入选择框(已为空) 在注册页面中,用户无法向其中添加其地址。
我应该怎么做才能将这个输入元素替换为一个输入类型的class='text'元素,以便用户键入他的地址

您可以在生成表单之前将
地址
转换为字段,并将文本值反向转换为提交表单中的
地址
对象

用于可能有许多
用户地址的
用户
,使用集合字段类型

$builder->add('addresses', 'collection', array(
    'type' => new AddressType(),
    ...
;
有关更多详细信息,请参阅官方symfony以嵌入表单集合和


Transformer和collection类型的区别在于Transformer只为地址提供一个文本字段,collection类型为您提供一个完整的子表单(考虑地址、邮政编码、城市输入字段)可以添加额外地址或删除地址。

转换器和收集类型的区别在于,转换器只为地址提供一个文本字段,而收集类型为完整的子表单(考虑地址、邮政编码、城市输入字段)可以添加额外地址或删除address@Frankbeen谢谢你的补充。我在回答中补充了这一点。以下是对你的问题的一个很好的回答: