Функция parent
Функция parent используется внутри тега block
при наследовании шаблонов. Она выводит содержимое
одноимённого блока из родительского шаблона. Это
позволяет не переписывать блок целиком, а лишь
дополнить или изменить его часть.
Функция не принимает параметров. Она возвращает строку с отрендеренным содержимым родительского блока. Вызывать её можно только внутри блока, который переопределяется в дочернем шаблоне.
Синтаксис
{{ parent() }}
Пример
Давайте создадим базовый шаблон с блоком
content:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}hello{% endblock %}</title>
</head>
<body>
{% block content %}
<p>article</p>
{% endblock %}
</body>
</html>
Теперь создадим дочерний шаблон, который
расширяет базовый и переопределяет блок
content, добавляя свой текст перед
родительским:
{% extends 'base.html.twig' %}
{% block content %}
<p>user</p>
{{ parent() }}
{% endblock %}
Результат выполнения кода:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>hello</title>
</head>
<body>
<p>user</p>
<p>article</p>
</body>
</html>
Пример
Давайте переопределим блок title,
дополнив родительский заголовок:
{% extends 'base.html.twig' %}
{% block title %}
{{ parent() }} - abcde
{% endblock %}
Результат выполнения кода:
<title>hello - abcde</title>
Пример
Давайте вызовем parent в блоке, который
определён сразу в нескольких уровнях наследования.
Создадим промежуточный шаблон:
{% extends 'base.html.twig' %}
{% block content %}
<p>user</p>
{{ parent() }}
{% endblock %}
Теперь расширим промежуточный шаблон и снова
вызовем parent:
{% extends 'middle.html.twig' %}
{% block content %}
<p>hello</p>
{{ parent() }}
{% endblock %}
Результат выполнения кода:
<p>hello</p>
<p>user</p>
<p>article</p>