【问题标题】:extend or include multiple instances TWIG扩展或包含多个实例 TWIG
【发布时间】:2016-08-11 22:40:27
【问题描述】:

我正在使用 Twig 作为模板引擎,并且我有一个通用的右侧边栏,应包含在所有页面上。

_base.twig

/* Page HTML header */
    {% block content %} {% endblock %}
/* Page HTML Footer */

index.twig

{% extends "_base.twig" %}
    {% block content %}
         <div id="left-bar">Dynamic Content</div>
         <div id="right-bar">Static Content</div>
    {% endblock %}

about.twig

    {% block content %}
         <div id="left-bar">Dynamic Content</div>
         <div id="right-bar">Static Content</div>
    {% endblock %}

.... 很多页面等等.. 我希望 right-bar 成为一个外部页面,并且应该包含在每个页面中,因为内容始终相同。

我尝试使用{% extends %} 两次,但 Twig 失败,因为我读到不允许多次扩展。所以请任何解决方案。

【问题讨论】:

标签: php twig


【解决方案1】:

使用 Twig,您有很多解决问题的可能性:

A/父解决方案官方文档为here

此解决方案在您的子块中呈现父块的内容。

_base.twig

/* Page HTML header */
{% block content %}
    <div id="left-bar">Dynamic Content</div>
    <div id="right-bar">Static Content</div>
{% endblock %}
/* Page HTML Footer */

index.twig

{% extends "_base.twig" %}
{% block content %}
    {{ parent() }}
{% endblock %}

about.twig

{% extends "_base.twig" %}
{% block content %}
    {{ parent() }}
{% endblock %}

other.twig

{% extends "_base.twig" %}
{% block content %}
    <div> If you don't place the parent twig attribute, your menu can't appear and will be overrided</div>
{% endblock %}

B/ 包含解决方案 官方文档是here

此方案创建另一个块,并在子块中调用该块。

_base.twig

/* Page HTML header */
{% block content %}
{% endblock %}
/* Page HTML Footer */

navBar.twig

<div id="left-bar">Dynamic Content</div>
<div id="right-bar">Static Content</div>

index.twig

{% extends "_base.twig" %}
{% block content %}
    {{ include('navBar.twig') }}\]
{% endblock %}

about.twig

{% extends "_base.twig" %}
{% block content %}
    {{ include('navBar.twig') }}
{% endblock %}

如果你使用 Symfony2 框架,你已经可以使用{{ render(controller('')) }} [你可以看到一个示例here] 来调用一个特定的控制器,自己调用一个树枝视图......如果你想加载它非常有用块中的动态值,但效果不如{{ include('') }}...

对我来说,B 解决方案是最好的,但两种解决方案都有效。

【讨论】:

  • 好的。我会试试的。我使用的是 SLIM。还有一件事我对 CSS 的更改没有得到反映。与 CSS 有什么关系?
  • 这取决于在哪里包含您的 CSS 文件 ^^ 但是,如果您的 CSS 包含在您的页面中(您可以查看您页面的源代码),那么您对此没有任何问题.. .
猜你喜欢
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2023-04-05
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多