Symfony形式:如何将不同的主题/小工具应用于特定的形式字段?

问题描述 投票:0回答:1

基于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') }}的内容,但没有找到这种方法。

php symfony symfony-forms
1个回答
0
投票

您可以应用主题,因此只需一个复选框:

{% 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 %}
© www.soinside.com 2019 - 2024. All rights reserved.