我使用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%}
答案 0 :(得分:0)
正如您所说,您不能重复使用字段。
我建议的方法是在表单translations_extra中添加一个附加字段,该字段未映射到实体或未被实体保留。在提交表单时,在控制器中提取数据,然后将其添加到翻译集合中。