1

我对 Symfony2 的表单类型“集合”与学说的列“数组”有一个简单的问题。**

我的实体:

/**
 * @Column(type="array", nullable=true)
 * @var array
 */
private $specifications;

我的“主要”表格:

public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('specifications', 'collection', array (
            'type' => new ProductSpecificationType(),
            'allow_add' => true,
            'allow_delete' => true,
            'by_reference' => false
        )
    );
}

我的“ProductSpecificationsType”表格:

public function buildForm(FormBuilder $builder, array $options)
{
    $builder
        ->add('group', 'text')
        ->add('info', 'text')
    ;
}

我的输出带有按钮(树枝):

{{ form_row(form.specifications) }}
<a data-prototype="{{ form_widget(form.specifications.vars.prototype) | e }}" href="#" onclick="return false;">Add</a>

真正的输出是这个(html):

<a data-prototype="" href="#" onclick="return false;">Add</a>

如果我只使用 form_widget 而不是最后的“e”,就像“escape”一样。

保存后,实体与数组 column = null 一起保存。

因此,如果我将每个 FireBug 的这些行手动添加到 html 表单中

<input type="text" name="product[specifications][0][group]" value="Exam">
<input type="text" name="product[specifications][0][info]" value="ple">
<input type="text" name="product[specifications][1][group]" value="Extra">
<input type="text" name="product[specifications][1][info]" value="Example">

然后按“保存”,实体以这种格式保存:

a:2:{i:0;a:2:{s:5:"group";s:4:"Exam";s:4:"info";s:3:"ple";}i:1;a:2:{s:5:"group";s:5:"Extra";s:4:"info";s:7:"Example";}}

我的问题:

  1. 为什么我的原型是空的?

  2. 为什么 form_widget 是空的?(如果我手动填写上面的数据也是空的!)

先感谢您!

4

1 回答 1

1

您是否尝试将 'prototype' => true 添加到“主”表单构建器?就像是:

$builder->add('specifications', 'collection', array (
        'type' => new ProductSpecificationType(),
        'allow_add' => true,
        'allow_delete' => true,
        'by_reference' => false,
        'prototype' => true
    )
);
于 2013-05-09T22:12:52.130 回答