【发布时间】:2015-02-06 12:38:41
【问题描述】:
我使用 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 属性时,我想为每个ContactMethod 设置一个TextInput,并且该输入应将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 .
我尝试过使用自定义表单类型和数据转换器,但找不到解决方案。
【问题讨论】:
标签: arrays forms symfony custom-fields guzzle