尝试自定义Symfony表单呈现,我在config.yml中有以下内容
twig:
form_themes:
- 'form/fields.html.twig'
form/fields.html.twig
包含自定义数字小部件:
{%- block number_widget -%}
<input type="text" {{ block('widget_attributes') }} value="{{ value|filter }}" />
{%- endblock number_widget -%}
只要我使用默认表单布局(div),一切正常。但是,如果我希望表单具有表格布局,我尝试在模板中添加这样的内容:
{% form_theme 'form_table_layout.html.twig' %}
表单显示为表格,但我的自定义number_widget不再自定义!
我也尝试过:
{% form_theme 'my_cystom_theme.html.twig' %}
my_cystom_theme.html.twig
包含:
{% use 'form_table_layout.html.twig' %}
没有帮助。
问题:
有没有办法在不重复代码的情况下为div和表格布局表单进行应用程序范围的自定义工作?
答案 0 :(得分:0)
解决方案是使用具有多个“使用”块的自定义tempalte:
创建自定义表格布局表单,例如form/table_layout.html.twig
,例如:
{# original table layout template #}
{% use 'form_table_layout.html.twig' %}
{# our custom field widgets #}
{% use 'form/fields.html.twig' %}
{# define more custom widgets for table layout here #}
为了使用我们的自定义小部件呈现表格布局表单,请在模板中使用它:
{# form_theme 'form/table_layout.html.twig' #}
对div布局执行相同操作。来自form/fields.html.twig
的自定义小部件将在表格和div布局中使用,而不会复制代码。