3

正如官方Symfony2 文档中所解释的,在 Twig 模板中,可以链接到资产,如下所示:

<img src="{{ asset('images/logo.png') }}" alt="My logo" />

这将呈现logo.png资源的正确路径(这取决于 Symfony2 应用程序所在的文件夹)。

好吧,假设使用必须在运行时加载图像的 Javascript 代码(例如,作为自动完成的结果),如何在 Javascript 中实现与assetTwig 中的函数提供的相同结果?

一些注意事项:

  1. 也许存在类似FOSJsRoutingBundle的东西,但我真的忽略了它!
  2. 一种肮脏的方法可能是为已知资源(例如logo.png文件)生成路径,然后通过将字符串替换为空的字符串替换变量来<script>var known = {{asset('images/logo.png)')}}</script>检索路径。但这是一种肮脏的方式!knownimages/logo.png
4

3 回答 3

4

您可以从asset函数中删除文件名以获取目录的绝对路径:

<script>
    var imgDir = {{ asset('images/') }}
</script>
于 2013-02-03T22:26:07.543 回答
1

从您的 js 文件到图像的路径很可能保持不变。这使您可以在 javascript 文件中使用“硬编码”路径。

例子:

web
 |
 |--js
 |   |
 |   |--foo.js
 |
 |--images
 |   |
 |   |--pic.jpg

在这种情况下,您可以通过注意从 foo.js 访问 pic.jpg ../images/pic.jpg ,该解决方案在您的 twig 视图中不起作用,因为在您的 twig 视图中,相对资产 url 取决于路由 url。这就是您需要该asset功能的原因。

于 2013-02-03T17:09:36.050 回答
0

Twig 不仅可以渲染 HTML 的 JS 文件。您可以创建一个 Twig 模板,该模板将返回包含您需要的所有脚本的 JS 文件。然后,您可以在此脚本文件中使用 Twig 的所有功能。

于 2013-02-04T14:46:24.180 回答