Поскольку я работаю с Symfony 4 и Twig, я создал некую структуру для расширения шаблонов и включения некоторых частей.
Мне нужна внешняя и внутренняя страница для моего проекта.
Структура:
Я включил base/head.html.twig внутри base.html.twig:
base/head.html.twig этот шаблон содержит следующее:
А теперь я хотел бы получить таблицу стилей специально для бэкэнда:
И вот в чем проблема. Потому что он не будет унаследован base/head.html.twig.
Я искал его в Интернете и пробовал несколько вещей. Может быть, вы знаете ответ?
Для этого вам нужно использовать embed вместо include (twig.symfony.com/doc/2.x/tags/embed.html), но я бы порекомендовал вам скопировать содержимое из base/head.html.twig прямо в base.html.twig. С моей точки зрения, более понятно иметь все в одном базовом шаблоне.
@Fabian - Не знаете, как встраивание решит эту проблему?
@DarkBee «Он позволяет вам включать содержимое другого шаблона, как это делает включение. Но он также позволяет вам переопределять любой блок, определенный внутри включенного шаблона, например, при расширении шаблона». это то, чего пытается добиться автор, если я правильно понял вопрос.
Не совсем - это значит, что встраивание будет в каждый шаблон, а не внутрь base.html
Вот почему я рекомендую копировать контент в base.html напрямую. Это будет самое простое и чистое решение.
Вы не указали в своем комментарии, что встраивание будет в каждый шаблон, который расширяет base.twig, это то, на что я пытаюсь указать
@Viperium - пожалуйста, не отправляйте код в виде изображения
@DarkBee Извините, как лучше всего опубликовать код?
@Fabian Я проверил это с помощью встраивания, но оно не заработало.
@Viperium, просто опубликуйте код в редакторе и отметьте его как код кнопкой {}






Я думаю, вы можете использовать горизонтальный повторное использование для этого. Настройка, которую вы бы использовали, должна быть примерно такой:
голова.ветка
{% block head %}
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}Title{% endblock %}</title>
{% block stylesheets %}
<link rel = "stylesheet" href = "foo.css" />
{% endblock %}
</head>
{% endblock %}
база.ветка
{% use 'head.twig' %}
{% block content %} {% endblock %}
фактический_шаблон.twig
{% extends 'base.twig' %}
{% block title %}My title{% endblock %}
{% block stylesheets %}
{{ parent() }}
<link rel = "stylesheet" href = "bar.css" />
{% endblock %}
{% block content %}
{{ block('head') }} {# inject head.twig in content #}
{% endblock %}
В любом случае лучше вставлять :)
Да и нет, вторая часть, которую вы предложили, еще лучше. Просто поместите головную часть в полную базу
Я попробовал это. И это работает как аспектированное. Только я использовал его в base.html.twig со следующим: {% use 'base/head.html.twig' %} и под ним {{ block('head') }}
Мой прокси мешает мне видеть картинки. Есть ли способ опубликовать это по-другому?