Twig Assetic Styles Sheets из нескольких шаблонов - PullRequest
3 голосов
/ 21 января 2012

Я пытаюсь добавить таблицы стилей в массив, чтобы по мере того, как шаблоны веток проходили через второй и третий уровни, агрегированные стили будут проходить через них.

Эта тема относится к Объединение ресурсов ресурсов между унаследованными шаблонами

Из 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 }} %}

Мне кажется, что глобальное решение должно быть жизнеспособным, хотя в настоящее время оно не работает. Надеюсь, я рядом. Что может это исправить?

1 Ответ

4 голосов
/ 21 января 2012

Это сейчас невозможно, потому что Assetic статически анализирует ваши шаблоны, чтобы найти любые активы, которые вы там определили. Поддержка этих динамических случаев находится на дорожной карте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...