Я пытаюсь добавить таблицы стилей в массив, чтобы по мере того, как шаблоны веток проходили через второй и третий уровни, агрегированные стили будут проходить через них.
Эта тема относится к Объединение ресурсов ресурсов между унаследованными шаблонами
Из config.yml я создал глобальный массив mystyles
, чтобы мы могли добавлять в список необходимых стилей, когда мы «всплываем» в процессе рендеринга.
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%
globals:
mystyles: []
Первый шаблон, вызванный из моего действия, взят из CommunicatorBundle / Resources / views / Admin / Workspace.html.twig , и я установил особый стиль для этой страницы под названием admin.workspace.css
.
{% extends "DJCommunicatorBundle::base.html.twig" %}
{% set mystyles = ["@DJCommunicatorBundle/Resources/public/css/admin.workspace.css"]|merge(mystyles) %}
Он расширяет CommunicatorBundle / Resources / views / base.html.twig , который имеет собственное требование data-table.css
.
{% extends "DJSharedBundle::base.html.twig" %}
{% set mystyles = ["@DJCommunicatorBundle/Resources/public/css/data-table.css" ]|merge(mystyles) %}
Наконец, мы загружаем самый внешний шаблон, SharedBundle / Resources / views / base.html.twig , который имеет свои собственные стили для добавления перед всеми остальными.
<head>
{% set mystyles = ['@DJSharedBundle/Resources/public/css/global.css', '@DJSharedBundle/Resources/public/css/grid.990.9-col.css']|merge(mystyles) %}
{% stylesheets {{ mystyles }} %}
<link rel="stylesheet" href="{{ asset_url }}" type="text/css" />
{% endstylesheets %}
</head>
Однако в этой строке он разрывается
{% stylesheets {{ mystyles }} %}
несмотря на этот тип теста, который выводит ожидаемый массив в правильном порядке
{{ mystyles|join(', ') }}
Кажется, что тег {% stylesheets %}
хочет, чтобы что-то вроде следующего фрагмента работало (что по понятным причинам является не объектом массива, а разделенным пробелами списком строк с разделителями).
{% stylesheets
'@DJSharedBundle/Resources/public/css/global.css'
'@DJSharedBundle/Resources/public/css/grid.990.9-col.css'
'@DJCommunicatorBundle/Resources/public/css/data-table.css'
'@DJCommunicatorBundle/Resources/public/css/admin.workspace.css'
%}
<link rel="stylesheet" href="{{ asset_url }}" type="text/css" />
{% endstylesheets %}
Даже тогда я пытался установить строку на такое длинное значение и распечатать ее, но это тоже не сработало:
{%
set str = "@DJSharedBundle/Resources/public/css/global.css
@DJSharedBundle/Resources/public/css/grid.990.9-col.css
@DJCommunicatorBundle/Resources/public/css/data-table.css
@DJCommunicatorBundle/Resources/public/css/admin.workspace.css"
%}
{% stylesheets {{ str }} %}
Мне кажется, что глобальное решение должно быть жизнеспособным, хотя в настоящее время оно не работает. Надеюсь, я рядом. Что может это исправить?