Symfony2表单“集合”+ Doctrine列“array”=清空form_widget

时间:2013-04-19 13:16:15

标签: arrays symfony doctrine-orm entity symfony-forms

我有一个简单的问题,关于Symfony2的表单类型“集合”与doctrine的列“数组”的组合。**

我的实体:

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

如果我只使用最终没有“e”之类的“e”的form_widget,那就相同了。

保存后,实体将使用数组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为空? (如果我手动填写上面的数据,也是空的!)

  3. 提前谢谢!

1 个答案:

答案 0 :(得分:1)

您是否尝试过添加'prototype'=&gt;对于“Main”表单构建器是真的吗? 类似的东西:

$builder->add('specifications', 'collection', array (
        'type' => new ProductSpecificationType(),
        'allow_add' => true,
        'allow_delete' => true,
        'by_reference' => false,
        'prototype' => true
    )
);