使用Javascript在运行时使用Symfony和资产
如官方文件所述,在细枝模板中,可以按如下方式链接到资产:使用Javascript在运行时使用Symfony和资产,javascript,symfony,assets,Javascript,Symfony,Assets,如官方文件所述,在细枝模板中,可以按如下方式链接到资产: <img src="{{ asset('images/logo.png') }}" alt="My logo" /> 这将呈现到logo.png资源的正确路径(取决于Symfony2应用程序所在的文件夹) 那么,假设使用一个Javascript代码,该代码必须在运行时加载一个图像(例如,作为自动完成的结果),如何在Javascript中实现Twig中的资产函数提供的相同结果 请注意: 也许存在类似的东西,但我真的忽略了它
<img src="{{ asset('images/logo.png') }}" alt="My logo" />
这将呈现到logo.png
资源的正确路径(取决于Symfony2应用程序所在的文件夹)
那么,假设使用一个Javascript代码,该代码必须在运行时加载一个图像(例如,作为自动完成的结果),如何在Javascript中实现Twig中的资产
函数提供的相同结果
请注意:
logo.png
文件var known={{asset('images/logo.png)}}
并通过将字符串images/logo.png
替换为空字符串来检索路径。但这是一种肮脏的方式李>
从js文件到图像的路径很可能保持不变。这使您可以在javascript文件中使用“硬编码”路径 例如:
web
|
|--js
| |
| |--foo.js
|
|--images
| |
| |--pic.jpg
在这种情况下,您可以通过。/images/pic.jpg
从foo.js访问pic.jpg
请注意,此解决方案在细枝视图中不起作用,因为在细枝视图中,相对资产url取决于路由url。这就是您需要
资产
功能的原因。您只需从资产
功能中删除文件名即可获得目录的绝对路径:
var imgDir={{asset('images/')}
Twig不仅可以呈现HTML,还可以呈现JS文件。您可以创建一个Twig模板,它将返回JS文件以及您需要的所有脚本。然后,您可以在此脚本文件中使用该细枝的所有功能。它似乎可以工作。但老实说,我在本地测试了它,只测试了一页。我应该多查几页+1并接受答案,直到有相反的证据为止@JeanValjean是的,但是我建议您也可以使用asset
函数获取目录路径,而不是输出文件路径并剥离文件名。这意味着你不需要去除文件名,这使得它不会“脏”嗯,我测试了它,它真的很有效!这两个答案都是正确的,但这一个应该是公认的答案,因为它依赖于真正基于Symfony的解决方案,并且不需要对生产服务器上的文件夹结构有特定的了解。“将属于Caesar的东西交给Caesar”-Stackoverflow应该是一个好东西的宝库,提出问题的人有责任检查标记为已接受的内容的正确性!如果你使用assets\u version
(),你必须删除版本的最后一部分。这与我的目标相去甚远!在运行时加载的JS文件中,我事先不知道将加载哪个图像,也不相信返回JS文件是一个好主意,因为我可以简单地返回JSON对象(字节越少越好!)