来自 URL 的 Symfony 转储资产

Symfony dump assets from URL

我有一个应用程序需要 URL 中的一些资产。我正在导入它们:

{% block stylesheets %}
    {% stylesheets
        'http://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css'
        'bundles/bmatznerfoundation/css/foundation.min.css'
        'bundles/arpanetkorepeteshop/css/*'
        filter="cssrewrite"
    %}
        <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

如果我抛售资产

php app/console assetic:dump

它下载源代码。但是如果源里面有一些导入,就不会下载了。

@font-face {
    font-family: "foundation-icons";
    src: url("http://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.eot");
}

有办法全部下载吗?

简短版本:没有。解析用于导入的 CSS 文件(在本例中为外部字体文件)超出了 Assetic 之类的范围。如果您愿意深入研究代码并编写自己的代码,有很多方法可以连接到 Assetic,但是在这种情况下,我建议您自己下载字体图标包 - 毕竟您是在捆绑它你自己作为项目依赖。

不,CSS 在页面加载时被解析 ,因此浏览器将进行下载,而不是 assetic。但这里有一个建议:

除了将 URL 添加到所有样式表块之外,您还可以将它们定义为配置中的资产(在我的例子中是 YML),然后只在样式表块中包含您需要的资产。

# Assetic Configuration
...
...
assets:
    foundation_icons:
        inputs:
          - //cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css
        output: css/foundation_icons.css
    jquery:
        inputs:
            - %kernel.root_dir%/../vendor/jquery/jquery/jquery-2.1.3.js
            - //ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js
        output: js/jquery.js
    datatables:
        inputs:
            - //cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js
        output: js/datatables.js

然后在您的样式表块中,只需调用

{% stylesheets
    '@foundation_icons'
    'bundles/bmatznerfoundation/css/foundation.min.css'
    'bundles/arpanetkorepeteshop/css/*'
%}

您现在可以在任何视图中加载@foundation_icons,而无需复制任何 URL。