2012-01-21 2 views
3

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

Эта тема связана с Combining Assetic Resources across inherited templates

От config.yml, я сделал глобальный массив mystyles, так что мы можем добавить в список необходимых стилей, как мы «пузыриться» через процесс рендеринга.

twig: 
debug:   %kernel.debug% 
strict_variables: %kernel.debug% 
globals: 
    mystyles: [] 

Первый шаблон вызывается из моего действия от CommunicatorBundle/Resources/Views/Администратор/Workspace.html.twig и я задал конкретный стиль для этой страницы под названием admin.workspace.css.

{% extends "DJCommunicatorBundle::base.html.twig" %} 
{% set mystyles = ["@DJCommunicatorBundle/Resources/public/css/admin.workspace.css"]|merge(mystyles) %} 

Он расширяет CommunicatorBundle/Ресурсы/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 %} тег хочет что-то вроде следующего snippit для работы (что, по понятным причинам, не является объектом массива, а разделенным пробелами списком строк с разделителями).

{% 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 }} %} 

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

ответ

4

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

+0

Dang! Предположим, что я буду работать над адаптацией, чтобы удовлетворить эту потребность. – ojreadmore

+0

У вас есть ссылка на билет github или что-то, что следует за статусом? –