如何使用symfony2动态更改页面标题

Nll*_*Nll 14 symfony twig

我在我的网站上使用Twig作为模板,我在所有其他的twig页面中扩展了layout.html.twig,所以在我的layout.html.twig中我有页面标题:

<title>{% block title %}Title of my website{% endblock %}</title>
Run Code Online (Sandbox Code Playgroud)

现在我的问题是如何在我的所有页面中动态更改此标题,例如我有news.html.twig来显示世界上所有最新的新闻,所以我希望当我显示我的新闻页面时,我有新闻的标题我的页面标题......

<title>{% block title %}Title of the news{% endblock %}</title>
Run Code Online (Sandbox Code Playgroud)

Mic*_*nax 26

我的解决方案在子模板中看起来更优雅:

在你的layout.html.twig:

<title>{% if page_title is defined %} {{ page_title }} | {% endif %} Your Website</title>
Run Code Online (Sandbox Code Playgroud)

在您的子页面模板中:

{% extends '::layout.html.twig' %}

{% set page_title = 'Your page-title' %}

{# Put the rest of your page below #}
Run Code Online (Sandbox Code Playgroud)

你也可以在例如重用标题.做<h1>{{ page_title }}</h1>:-)

  • 您应该将短划线(或任何其他分隔符)放在条件块中,如下所示:{%if page_title is defined%} {{page_title}} - {%endif%}您的网站.否则,如果page_title未定义,您将在基本标题之前获得尾随分隔符. (5认同)

MDr*_*tte 16

你很亲密 在您的news.html.twig假设中,您将所有内容都放在这样的块中:

{% extends '::layout.html.twig' %}

{% block content %}
    content of the news page here
{% endblock %}`
Run Code Online (Sandbox Code Playgroud)

因此,您所要做的就是为该内容块之外的标题添加另一个块

{% extends '::layout.html.twig' %}

{% block title %}Title of news page{% endblock %}

{% block content %}
    content of the news page here
{% endblock %}`
Run Code Online (Sandbox Code Playgroud)


alb*_*ert 7

你想象的更简单.

放在主/父布局上

...
<title>{% block title %}{% endblock %} - My Site</title>
...
Run Code Online (Sandbox Code Playgroud)

并且,在内容页面(在子布局上),获取页面标题

...
<h1>{{ block('title') }}</h1>
...
Run Code Online (Sandbox Code Playgroud)

因此,您在头部标题中添加的任何标题都将显示在内容标题中.