我想覆盖在树枝中使用的基本文件。
我用过这个
twig:
form:
resources:
- 'form_div_layout.html.twig'
我将文件从原始位置复制到
app/resources/views/Form/form_div_layout.html.twig
但我仍然无法看到模板渲染的变化。
基本上我只想在生成的DIV框中添加类
{% block form_widget_compound %}
{% spaceless %}
<div class="MYCLASS"
{{ block('widget_container_attributes') }}>
{% if form.parent is empty %}
{{ form_errors(form) }}
{% endif %}
{{ block('form_rows') }}
{{ form_rest(form) }}
</div>
{% endspaceless %}
{% endblock form_widget_compound %}
我是否需要进行更改?
答案 0 :(得分:9)
如果您只想自定义一个字段,则无需复制完整文件。这样做:
如果您只想为一个模板执行此操作,请将其添加到模板中:
{% form_theme form _self %}
{% block form_widget_compound %}
{% spaceless %}
<div class="MYCLASS" >
{{ block('widget_container_attributes') }}>
{% if form.parent is empty %}
{{ form_errors(form) }}
{% endif %}
{{ block('form_rows') }}
{{ form_rest(form) }}
</div>
{% endspaceless %}
{% endblock form_widget_compound %}
如果要在多个模板中自定义此功能,请执行以下操作:使用以下代码在捆绑包中创建模板文件:
{# src/Acme/DemoBundle/Resources/views/Form/fields.html.twig #}
{% block form_widget_compound %}
{% spaceless %}
<div class="MYCLASS" >
{{ block('widget_container_attributes') }}>
{% if form.parent is empty %}
{{ form_errors(form) }}
{% endif %}
{{ block('form_rows') }}
{{ form_rest(form) }}
</div>
{% endspaceless %}
{% endblock form_widget_compound %}
然后,在要使用此自定义字段的模板中,执行:
{% form_theme form 'AcmeDemoBundle:Form:fields.html.twig' %}
如果您希望此自定义在捆绑包的所有模板中可用,请将其添加到配置文件中:
# app/config/config.yml
twig:
form:
resources:
- 'AcmeDemoBundle:Form:fields.html.twig'
如果您希望此选项可用于所有捆绑包,请将此文件复制到
app/Resources/AcmeDemoBundle/views/Form/fields.html.twig
答案 1 :(得分:1)
要在没有表单文件夹的资源中执行您正在尝试复制 form_div_layout.html.twig 的内容,然后在配置中以这种方式对其进行复制:: :form_div_layout.html.twig 强>
twig:
form:
resources:
- '::form_div_layout.html.twig'
您无需复制所有内容。你只能扩展它的一部分..
答案 2 :(得分:0)
这里简单明了。要仅覆盖某些块应用程序范围,必须使用与form_div_layout.html.twig
不同的文件名,否则您将收到错误。如果您复制整个文件并进行更改,这不是问题。但是如果你只想覆盖一些块,你就是这样做的:
创建文件app/Resources/views/forms.html.twig
并粘贴您要自定义的块。只要文件名不 form_div_layout.html.twig
,文件名就不重要。
接下来将其添加到app/config/config.yml
# app/config/config.yml
twig:
form:
resources: ["::forms.html.twig"]