有没有办法做到这一点?我有一个模板,输出一个博客文章.
现在,在索引页面上,我通过在for循环中显示10个文章,在显示页面上我只显示一个.
指数:
{% 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次?
我试图使我的“片段”模板(用于包含的模板)定义他们使用的样式表,并使它们“注入”到页面.
你尝试使用
use吗?
不幸的是,我不完全确定我是否有问题,但{%use%}没有在这里提及.
不幸的是,我不完全确定我是否有问题,但{%use%}没有在这里提及.
据了解,您已经获得了article.html.twig并将其包含在例如index.html.twig.现在你想从article.html.twig添加一些index.html.twig?也就是{%styleheets%}块.
如果我有使用{%使用%}的方式,可以这样尝试一下.
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 %}
我没有机会测试它,但文件说了几个非常有趣的事情,似乎这样做可以做到这一点.
Horizontal reuse is an advanced Twig feature that is hardly ever needed in regular templates. It is mainly used by projects that need to make template blocks reusable without using inheritance.
我相当新的stackoverflow.所以请,如果我的答案完全没用,你可以在投票前发表评论,我删除它?但是,如果它有帮助,并且在我的例子中只是一些错误,也通知我,我会解决它.