我有以下基于 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>
我尝试了 assetic 文档并深入研究了 AsseticTokenParser 和 AsseticNode 类,但找不到引用实际文件路径而不是 url 的变量。
通常我用css而不是js来做,但应该是同一个概念。
谢谢!
最佳答案
在生产模式下,symfony 生成一个指向静态文件的链接,可以直接将其包含到模板中。此文件需要使用类似以下内容生成:
php app/console assetic:dump --env=prod --no-debug
在开发模式下,没有生成可以包含的静态文件。 asset_url 包含一个 url,它将调用 symfony Controller ,后者将动态生成所需的 js/css 文件。显然,在 symfony 中包含 Controller 的输出非常容易:
{% render asset_url %}
为了回答我自己的问题,可以编写一个 twig 扩展,其中包括一个静态文件或将请求转发到 render
方法,具体取决于它是在生产模式还是开发模式下调用的。
如果/当我写这样的扩展时,我会更新这个页面。
另一种选择是不使用 assetic 的开发模式,而是始终动态生成静态 css/js 文件:
php app/console assetic:watch
然后一个简单的 include
就可以了。
我希望 Symfony 中有一个开箱即用的方法来完成这个常见任务。
关于javascript - 带有 assetic 的 symfony 内联 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32902590/