Как изменить название страницы динамически с помощью symfony2

Я использую Twig для шаблона на своем веб-сайте, я расширяю layout.html.twig во всех моих других страницах 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>

Ответ 1

Вы близки. В вашем 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

Мое решение выглядит немного более элегантным в дочерних шаблонах:

В 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>: -)

Ответ 3

Более просто, чем вы себе представляете.

Наведите основной/родительский макет

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

а на странице контента (на детском макете) получите заголовок страницы

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

Таким образом, заголовок, который вы помещаете в заголовок главы, будет отображаться в заголовке содержимого.