【问题标题】:Symfony2 array of custom objects into form fieldsSymfony2 自定义对象数组到表单字段中
【发布时间】:2015-02-06 12:38:41
【问题描述】:

我使用 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 属性时,我想为每个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


    【解决方案1】:

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

    列表是动态的,所以你必须为新类型编写自己的 buildView 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 2013-01-06
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      相关资源
      最近更新 更多