gpt4 book ai didi

php - Twig 包含的模板扩展了父级的 block 一次

转载 作者:行者123 更新时间:2023-12-02 22:30:39 24 4
gpt4 key购买 nike

有办法做到这一点吗?我有一个输出一篇博客文章的模板。

现在,在 index 页面上,我通过在 for 循环中包含该模板来显示 10 篇文章,而在 show 页面上,我只显示一篇文章。

索引:

{% 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 次?

我试图让我的“片段”模板(用于包含的模板)定义它们使用的样式表,并将它们“注入(inject)”到页面中。

最佳答案

您是否尝试使用 use ?不幸的是,我不完全确定我的问题是否正确,但这里没有提到{% use %}

据我了解,您已获得 article.html.twig 并将其包含在例如中index.html.twig。现在您想将 article.html.twig 中的内容添加到 index.html.twig 中吗?即到 {% stylesheets %} block 。

如果我知道如何使用{% 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 %}

我没有机会测试它,但文档陈述了一些非常有趣的事情,看起来这可能是实现它的方法。

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 还很陌生。所以,如果我的答案完全没用,您可以在投票之前发表评论,然后我将其删除吗?但是,如果它确实有帮助并且我的示例中存在一些错误,也请通知我,我会修复它。

关于php - Twig 包含的模板扩展了父级的 block 一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14110216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com