Symfony2:循环中的form_row原型

时间:2015-01-23 13:54:03

标签: forms symfony loops collections

我有一个实体产品,我正在添加traductions(ProductDescription的集合)。

这是我的ProductDescriptionType:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name')
        ->add('description', 'textarea')
        ->add('metaDescription', 'textarea')
        ->add('metaKeyword', 'textarea')
        ->add('tag')
        ->add('languageId', 'hidden')
    ;
}

我的ProductType:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('upc')
        ->add('model')
        ->add('sku')
        ->add('quantity')
        ->add('price')
        ->add('status', 'choice', 
            array(
                'choices'   => Product::getStatusArray(),
                'required'  => true,
            )
        )
    ;

    //ProductDescription 
    $builder->add('traductions', 'collection', 
        array(
            'type' => new ProductDescriptionType(),
            'allow_add'     => true,
            'prototype'     => true,
            'label'         => false,
            'by_reference'  => false
        )
    );
}

在我看来new.html.twig,我正在做:

{% for language in languages %}
    <div role="tabpanel" class="tab-pane" id="product-traduction-{{ language.languageId }}">
        {{ form_row(create_form.traductions.vars.prototype.languageId, {'value' : language.languageId }) }}
        {{ form_row(create_form.traductions.vars.prototype.name) }}
        {{ form_row(create_form.traductions.vars.prototype.description) }}
        {{ form_row(create_form.traductions.vars.prototype.metaDescription) }}
        {{ form_row(create_form.traductions.vars.prototype.metaKeyword) }}
        {{ form_row(create_form.traductions.vars.prototype.tag) }}
     </div>
 {% endfor %}

我没有循环遍历create_form.traductions,因为它是空的(创建产品),我希望ProductDescription的字段已经显示所有可用的语言。

问题是form_row只渲染字段一次。

我看到这部分是在CookBook http://symfony.com/doc/current/cookbook/form/form_collections.html上解释的,但它是用JQuery完成的,我必须对原型输入做很多修改才能达到我想要的效果(替换 name ,将languageId放在隐藏的输入中等。)

有人能帮助我吗?

感谢您的时间。

0 个答案:

没有答案