14

これを行う方法はありますか?1 つのブログ記事を出力するテンプレートがあります。

ここで、インデックスページにそのテンプレートをforループに含めることで 10 個の記事を表示し、表示ページに 1 つだけ表示します。

索引:

{% block stylesheets %}
    {# some stylesheets here #}
{% endblock %}

{% for article in articles %}
        {% include VendorBundle:article.html.twig with { 'article': article } %}
{% endfor %}

見せる:

{% block stylesheets %}
      {# some stylesheets here #}
{% endblock %}

{% include VendorBundle:article.html.twig with { 'article': article } %}

article.html.twig{% block stylesheets %}にそれを含むテンプレートに何かを自動的に追加させる方法はありますか? 可能であれば、forループを使用するときにその10回を追加しないようにするにはどうすればよいですか?

「フラグメント」テンプレート (組み込みに使用されるテンプレート) で、使用するスタイルシートを定義し、それらをページに「挿入」しようとしています。

4

2 に答える 2

18

use を使おうとしましたか?残念ながら、質問が正しいかどうかは完全にはわかりませんが、{% use %}ここでは言及されていません。

あなたが持っている質問を理解しているarticle.html.twigので、例えばに含めてくださいindex.html.twig。から何かを追加したいarticle.html.twigですindex.html.twigか?つまり、{% stylesheets %}ブロックに。

使い方{% use %}がわかれば、こんな風に試してみてもいいかもしれません。

article.html.twig

{% block stylesheets %}
    <link rel="stylesheet" href="{{ asset('bundles/mybundle/css/article.css') }}" type="text/css" />
{% endblock %}
{% block article %}
    {# whatever you do here #}
{% endblock %}

index.html.twig

{% use "VendorBundle:article.html.twig" with stylesheets as article_styles %}
{% block stylesheets %}
    {{ block('article_styles') }}
    {# other styles here #}
{% endblock %}
{% for article in articles %}
        {% include VendorBundle:article.html.twig with { 'article': article } %}
{% endfor %}

私はそれをテストする機会がありませんが、ドキュメントにはいくつかの非常に興味深いことが記載されており、これがそれを行う方法のようです.

水平再利用は、通常のテンプレートではほとんど必要とされない高度な Twig 機能です。主に、継承を使用せずにテンプレート ブロックを再利用可能にする必要があるプロジェクトで使用されます。

私はスタックオーバーフローにかなり慣れていません。私の答えがまったく役に立たない場合は、反対票を投じる前にコメントを投稿してください。削除してください。ただし、それが役に立ち、私の例にいくつかのエラーがある場合もお知らせください。修正します。

于 2013-05-04T19:38:05.087 に答える
0

新しいブロックを使用できます (テストされていません):

{# index.html.twig #}
{% block stylesheets -%}
    {% block article_styles '' %}
{%- endblock %}

{% for ... -%}
    {% include VendorBundle:template.html.twig with {'article': article} %}
{%- endfor %}

{# template.html.twig #}
{% block article_styles -%}
    {{ parent() }}
    <link rel=stylesheet href=...>
{%- endblock %}

{# ... #}

編集:追加されまし{{ parent() }}た。これにより、ブロックに既に含まれているすべてのコンテンツが出力されます。

于 2013-01-01T13:38:40.523 に答える