正如官方Symfony2 docs所述,在Twig模板中,可以链接到资产,如下所示:
<img src="{{ asset('images/logo.png') }}" alt="My logo" />
将呈现logo.png
资源的正确路径(取决于Symfony2应用程序所在的文件夹)。
好吧,假设使用必须在运行时加载图像的Javascript代码(例如,作为自动完成的结果),如何在Javascript中实现asset
函数提供的相同结果树枝
有些注意事项:
logo.png
文件<script>var known = {{asset('images/logo.png)')}}</script>
因此通过将字符串known
替换为空字符串来替换变量images/logo.png
上的字符串替换路径。但这是一种肮脏的方式!答案 0 :(得分:4)
您只需从asset
函数中删除文件名即可获得目录的绝对路径:
<script>
var imgDir = {{ asset('images/') }}
</script>
答案 1 :(得分:1)
很可能,从js文件到图像的路径保持不变。这使您可以在javascript文件中使用“硬编码”路径。
示例:
web
|
|--js
| |
| |--foo.js
|
|--images
| |
| |--pic.jpg
在这种情况下,您可以通过../images/pic.jpg
从foo.js访问pic.jpg
请注意,此解决方案在您的树枝视图中不起作用,因为在您的树枝视图中,相对资源网址取决于路径网址。这就是您需要asset
功能的原因。
答案 2 :(得分:0)
Twig可以渲染JS文件,而不仅仅是HTML。您可以创建一个Twig模板,该模板将返回包含您需要的所有脚本的JS文件。然后,您可以在此脚本文件中使用所有Twig的功能。