基于Symfony 3.4的表单包含多个CheckboxType
字段。这些字段中的某些字段应显示为普通复选框(=使用默认复选框小部件),而另一些字段应显示为开/关开关(如iOS UISwitche
)。
因此,在相同类型(CheckboxType
)的相同表单字段中,应使用不同的小部件。我该怎么办?
当然,我可以将自定义form_theme
应用于完整的表格({% form_theme form 'AppBundle:Form:myTheme.html.twig' %}
)。但是,此效果all复选框不仅在表单中,而且在表单中也是如此。因此,这不是解决方案。
一种可行的解决方案是使用其ID将不同的窗口小部件应用于一个特定字段:
{% block _user_registration_form_someCheckBoxRow %}
...
{% endblock %}
虽然此解决方案有效,但我必须为所有受影响形式的所有受影响字段创建/覆盖相同的块。这相当麻烦,因此不是一个好的解决方案。
没有更好的方法吗?我正在搜索类似{{ form_row(form.someCheckbox, 'someWidget') }}
的内容,但没有找到这种方法。
您可以应用主题,因此只需一个复选框:
{% form_theme form.my_special_checkbox 'Form/Theme/special_checkbox.html.twig' %}
或者,如果您不需要单独的主题,则可以在当前的Twig文件中编写块:
{% block _my_checkbox_widget_block %}
{# the theme #}
{% endblock %}
{% form_theme form.my_special_checkbox _self %}