Symfony拆分嵌入式表格

时间:2018-01-06 15:13:38

标签: symfony twig

我使用symfony嵌入表单来管理给定实体的翻译字段。我的主体有一个布尔字段,每个翻译都有多个文本字段。

我不使用可翻译的学说扩展,我不想使用它。

在我的FormType中,我使用CollectionType将翻译的字段嵌入到我的表单中,在模板中,我使用表单主题来自定义HTML。

这是我的问题:我想在我的表单中对字段进行分组以优化UX,但是一旦我在我的字段上调用form_widget,我就不能再次使用它了。我想为给定的语言显示2个字段,然后在表单中显示另一个字段。我怎样才能解决我的问题?

这是一个说明我问题的小例子。

{% form_theme form _self %}

{% block _service_translations_entry_widget %}
<div>
    {% if name == 0 %}
    <div class="s12 m6 l6">
        {{ form_label(form.title) }}
        {{ form_errors(form.title) }}
        {{ form_widget(form.title) }}
    </div>

    <div class="s12 m6 l6">
        {{ form_label(form.subtitle) }}
        {{ form_errors(form.subtitle) }}
        {{ form_widget(form.subtitle) }}
    </div>
    {% endif %}

    {% if name == 1 %}
    <div class="s12 m12 l12">
        {{ form_label(form.desc) }}
        {{ form_errors(form.desc) }}
        {{ form_widget(form.desc) }}
    </div>
    {% endif %}
</div>
{% endblock %}

{% block body %}

{{ form_start() }}
{{ form_errors(form) }} 

<div>
    <div class="s12 m12 l12">
        {{ form_label(form.doubleBlock) }}
        {{ form_errors(form.doubleBlock) }}
        {{ form_widget(form.doubleBlock) }}
    </div>
</div>

<div id="block-1">
    {{ form_widget(form.translations) }}
</div>

<div>
    <div class="s12 m6 l6">
        {{ form_label(form.activedStyle) }}
        {{ form_errors(form.activedStyle) }}
        {{ form_widget(form.activedStyle) }}
    </div>

    <div class="s12 m6 l6">
        {{ form_label(form.checkoutOption) }}
        {{ form_errors(form.checkoutOption) }}
        {{ form_widget(form.checkoutOption) }}
    </div>
</div>

<div id="block-2">
    {{ form_widget(form.translations) }}
</div>

{{ form_widget(form.save) }}

{{ form_rest(form) }}
{{ form_end(form) }}

{%endblock body%}

1 个答案:

答案 0 :(得分:0)

正如您所说,您不能重复使用字段。

我建议的方法是在表单translations_extra中添加一个附加字段,该字段未映射到实体或未被实体保留。在提交表单时,在控制器中提取数据,然后将其添加到翻译集合中。