几个模板中的Twig Assetic样式表

时间:2012-01-21 00:14:59

标签: symfony twig

我正在尝试将样式表添加到数组中,以便当twig模板扩展到第二级和第三级时,聚合样式将继续执行。

本主题与Combining Assetic Resources across inherited templates

相关

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 %}标签需要类似下面的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 }} %}

我觉得全球应该是一个可行的解决方案,尽管目前还不行。希望我很亲密。什么可能解决这个问题?

1 个答案:

答案 0 :(得分:4)

现在无法做到这一点,因为Assetic 静态会分析您的模板,以查找您在那里定义的任何资产。支持这些动态案例的是路线图。