Symfony2自定义对象数组到表单字段中

时间:2015-02-06 12:38:41

标签: arrays forms symfony custom-fields guzzle

我使用Guzzle从我的Symfony 2应用程序中的API获取一些数据。这些数据正确映射到我的模型中。该模型是具有一些属性的Contact对象。其中一个属性是ContactMethod这样的数组

/**
 * @SerializedName("methods")
 * @Type("array<My\Bundle\Model\ContactMethod>")
 */
private $methods;

ContactMethod对象只有两个属性:typevalue

class ContactMethod {

/**
 * @SerializedName("type")
 * @Type("string")
 */
private $type;

/**
 * @SerializedName("value")
 * @Type("string")
 */
private $value;

... setters and getters ...

我已使用ContactType函数创建了buildForm,以便在表单中显示Contact的所有属性。但是,当显示methods属性时,我希望每个TextInput都有一个ContactMethod,并且该输入应该将type作为标签和{{ 1}}作为价值。

value

我还需要以相反的方式工作:当填写并提交所有文本输入时,必须将字段打包到一个class ContactType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options = array()) { $builder ->add(...all the other simple fields...) ->add(...what shall I add here ? ) 数组中,以便我可以重新编译并将数据发送回API。

我试图使用自定义表单类型和数据变换器,但我找不到解决方案。

1 个答案:

答案 0 :(得分:0)

您的Contact对象被映射到一个ContactType,因此只需添加一个属性methods及其类型(例如)"method_list"如果它被声明为服务或仅new MethodListType()

列表是动态的,因此您必须为新Type编写自己的buildView方法。