javascript – 具有资产的symfony内联资产

我有以下基于Symfony2文档的代码:

    {% block javascripts %}

        {% javascripts filter="?jsqueeze" output="js/app.js"
            "%kernel.root_dir%/Resources/assets/js/one.js"
            "%kernel.root_dir%/Resources/assets/js/two.js" %}
            <script src="{{ asset_url }}"></script>
        {% endjavascripts %}

    {% endblock %}

这就像魅力一样.

我想做的不是

<script src="{{ asset_url }}"></script>

使用类似的东西:

<script> ... inline asset contents here ... </script>

我尝试了资产文档以及挖掘AsseticTokenParser和AsseticNode类,但找不到引用实际文件路径而不是url的变量.

通常我用css而不是js来做,但它应该是相同的概念.

谢谢!

解决方法:

在生产模式下,symfony生成一个指向静态文件的链接,该文件可以直接包含在模板中.需要使用以下内容生成此文件:

php app/console assetic:dump --env=prod --no-debug

在开发模式下,没有生成可以包含的静态文件. asset_url包含一个url,它将调用symfony控制器,该控制器将动态生成所需的js / css文件.显然,在symfony中包含控制器的输出非常容易:

{% render asset_url %}

要回答我自己的问题,可以编写一个twig扩展名,其中包括一个静态文件或转发请求来呈现方法,具体取决于它是在prod或dev模式下调用的.

如果/当我写这样的扩展名时,我会更新此页面.

另一种选择是不使用资产的开发模式,并且总是动态生成静态css / js文件:

php app/console assetic:watch

然后一个简单的包含将起作用.

我希望Symfony中有一个开箱即用的方法来完成这项常见任务.

上一篇:在Android Studio中创建图像资源


下一篇:android – 如何将文件从’assets’文件夹复制到SD卡?