Symfony实体文本输入在表单生成器



我在symfony中有两个实体:第一个"用户"实体具有$addresses属性,该属性与第二个名为"UserAddresses"的实体具有一对多的关系,其中字段为:$id,$address(字符串)。我想使用symfony表单生成器创建注册页面为我的网站,我想为用户添加他的地址到他的帐户在注册页面的文本输入。当我使用:

$builder->add('addresses', 'entity', array(
    'class' => 'XXXUserBundleEntityUserAddresses',
    'property' => 'address',
    'label' => 'label.address',
    'mapped' => false,
    'translation_domain' => 'labels'))
;

我看到一个显示用户地址的输入选择框(已经为空)在注册页面中,用户无法添加自己的地址。我该怎么做才能将这个输入元素替换为input type='text'元素,以便用户输入他的地址

对于可以有多个UserAddressesUser,使用集合字段类型

$builder->add('addresses', 'collection', array(
    'type' => new AddressType(),
    ...
;

要了解更多详细信息,请参阅官方symfony cookbook嵌入表单集合和集合字段类型参考。

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

您可以在构建表单之前使用ModelTransformer将Address转换为字段,并在提交表单中将文本值反向转换为Address对象

最新更新