我使用Guzzle从我的Symfony 2应用程序中的API获取一些数据。这些数据正确映射到我的模型中。该模型是具有一些属性的Contact
对象。其中一个属性是ContactMethod
这样的数组
/**
* @SerializedName("methods")
* @Type("array<My\Bundle\Model\ContactMethod>")
*/
private $methods;
ContactMethod
对象只有两个属性:type
和value
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。
我试图使用自定义表单类型和数据变换器,但我找不到解决方案。
答案 0 :(得分:0)
您的Contact对象被映射到一个ContactType,因此只需添加一个属性methods
及其类型(例如)"method_list"
如果它被声明为服务或仅new MethodListType()
。
列表是动态的,因此您必须为新Type编写自己的buildView方法。