Как изменить название страницы динамически с помощью 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>
...
Таким образом, заголовок, который вы помещаете в заголовок главы, будет отображаться в заголовке содержимого.