5

小枝で使用するベーステンペールをオーバーライドしたい。

私はこれを使用しました

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 %}

これ以上変更する必要がありますか?

4

4 に答える 4

9

1つのフィールドをカスタマイズするだけの場合は、ファイル全体をコピーする必要はありません。これを行う:

1つのテンプレートに対してこれを実行するだけの場合は、これをテンプレートに追加します。

{% 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
于 2012-09-03T06:45:49.803 に答える
1

あなたがしようとしていることを行うには、フォームフォルダーなしでリソースにform_div_layout.html.twigだけをコピーし、構成で次のように参照します: ::form_div_layout.html.twig

twig:
    form:
        resources:
            - '::form_div_layout.html.twig'

すべてをコピーする必要はありません。一部のみ拡張できます。

于 2013-03-11T09:06:52.803 に答える
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"]
于 2013-12-22T03:28:08.777 に答える