symony4获取带有空数据的表单集合原型

时间:2018-04-08 13:36:35

标签: forms symfony

出于ajax的目的,我想访问集合的表单原型。如果集合中有数据,我可以得到它。但如果集合为空,则data-prototype返回一个空字符串。

即使集合仍然是空的,我如何返回原型?

表单字段:

        ->add('colors', CollectionType::class, array(
            'entry_type' => JnTestColorColorType::class,
            'entry_options' => array('label' => false),
            'allow_add' => true,
            'by_reference' => false,
            'allow_delete' => true,
            'required'=>false,
            'prototype'=>true
        ))

观点:

    {% if  form.colors is defined %}
    <h3>Colors</h3>
    <ul class="colors" data-prototype="{{ form_widget(form.colors.vars.prototype)|e('html_attr') }}">
   {# iterate over each existing tag and render its only field: name #}
   {% for color in form.colors %}
    <li>{{ form_row(color.color) }}</li>
   {% endfor %}
   </ul>
   {% endif %}

2 个答案:

答案 0 :(得分:1)

感谢@ Philippe-B-评论

  

您是否尝试过一次渲染集合字段以查看是否有任何区别?

我需要立即渲染所有字段以在我的视图中获取原型!

答案 1 :(得分:0)

正如在the documentation中提到的,有两种方法可以呈现data-prototype属性:

  • 自动渲染集合字段(form_row(form.emails))。
  • 手动,使用表单变量(data-prototype="{{ form_widget(form.emails.vars.prototype)|e }}")。

在这两种情况下,无论底层数据如何,都应该渲染原型。