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

时间:2012-06-27 17:37:51

标签: symfony twig

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

<title>{% block title %}Title of my website{% endblock %}</title>

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

<title>{% block title %}Title of the news{% endblock %}</title>

4 个答案:

答案 0 :(得分:25)

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

layout.html.twig

<title>{% if page_title is defined %} {{ page_title }} | {% endif %} Your Website</title>

在您的子页面模板中:

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

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

{# Put the rest of your page below #}

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

答案 1 :(得分:15)

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

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

{% block content %}
    content of the news page here
{% endblock %}`

所以你要做的就是为该内容块的标题 添加另一个块

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

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

{% block content %}
    content of the news page here
{% endblock %}`

答案 2 :(得分:8)

你想象的更简单。

放置主/父布局

...
<title>{% block title %}{% endblock %} - My Site</title>
...

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

...
<h1>{{ block('title') }}</h1>
...

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

答案 3 :(得分:0)

{%block title%} {{post.title}} Symfony web.app {%endblock%}