我有以下基于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来做,但它应该是相同的概念。
谢谢!
答案 0 :(得分:2)
在生产模式下,symfony会生成指向静态文件的链接,该文件可以直接包含在模板中。需要使用以下内容生成此文件:
php app/console assetic:dump --env=prod --no-debug
在开发模式下,没有生成可以包含的静态文件。 asset_url包含一个url,它将调用symfony控制器,该控制器将动态生成所需的js / css文件。显然,在symfony中包含控制器的输出非常容易:
{% render asset_url %}
要回答我自己的问题,可以编写一个twig扩展名,其中包括一个静态文件或render
方法的转发请求,具体取决于它是在prod或dev模式下调用的。
如果/当我写这样的扩展名时,我会更新此页面。
另一种选择是不使用资产的开发模式,并且总是动态生成静态css / js文件:
php app/console assetic:watch
然后一个简单的include
就可以了。
我希望Symfony中有一个开箱即用的方法来完成这项常见任务。