2015-02-06 22 views
1

我使用Guzzle從我的Symfony 2應用程序中的API獲取一些數據。這些數據正確映射到我的模型中。該模型是具有一些屬性的Contact對象。其中一個屬性是ContactMethod數組這樣Symfony2自定義對象數組到表單域

/** 
* @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 ... 

我已經創建了其buildForm功能ContactType以以表格形式顯示Contact的全部屬性。但是當涉及到顯示methods屬性時,我希望TextInput適用於ContactMethod中的每一個,並且輸入應該將type作爲標籤,將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 ?) 

我還需要這以相反的方式工作:當所有的文本輸入填充並提交,字段必須被一起打包成ContactMethod一個數組,所以我可以重新序列化和數據發送回API。

我試圖玩弄自定義表單類型和數據轉換器,但我找不到解決方案。

回答

0

您的聯繫人對象被映射到一個聯繫人類型,因此只需添加屬性methods及其類型(例如)"method_list"如果它被聲明爲服務或只是new MethodListType()

該列表是動態的,因此您必須爲新類型編寫自己的buildView方法。