【问题标题】:symfony : using asset images with javascript?symfony:使用带有 javascript 的资产图像?
【发布时间】:2017-04-19 19:30:40
【问题描述】:

在平面 php 代码中,我可以像这样编写这一行,然后得到我想要的图像

imageString = "<image src=\"" + pieceFileName + "\" class=\"Piece clickElement " + rankName + " " + fileName + "\"/>";

但是使用 javascript symfony 怎么样?

我试过这样写这段代码,但没有成功

imageString = "<img src=\"""{{ asset(' \""+ pieceFileName +"\" ')}}""\" class=\"Piece clickElement " + rankName + " " + fileName + "\"/>";

完整代码

function AddGUIPiece(sq,pce) {  
    var rank = RanksBrd[sq];
    var file = FilesBrd[sq];
    var rankName = "rank" + (rank + 1); 
    var fileName = "file" + (file + 1); 
    pieceFileName = "images/" + SideChar[PieceCol[pce]] + PceChar[pce].toUpperCase() + ".png";
    imageString = "<image src=\"" + pieceFileName + "\" class=\"Piece clickElement " + rankName + " " + fileName + "\"/>";

【问题讨论】:

  • @DarkBee 是的,我在添加上面的代码之前使用 helloworld 代码对其进行了测试
  • 您必须将 twig 视为类似于 PHP。它呈现在服务器端。在这里,您尝试基于客户端的 JS 变量 pieceFileName 拥有不同的资产。所以你正在看的东西是不可能的。您或许应该选择 AJAX 解决方案。查看相关问题:stackoverflow.com/q/13840429/2123530
  • @b.enoit.be 你是对的,所以我需要在树枝文件上添加资产行,然后我将它传递给你的意思的 javascript 文件?

标签: javascript image symfony twig assets


【解决方案1】:

Twig 和 PHP 一样,将在第一次渲染/调用服务器时运行。所以它不能像你那样与代码的动态部分结合起来。

但是,如果所有这些图像都在同一个文件夹中,为什么不直接保存路径呢?

<script>
var guiPiecePre = "{{ asset('images') }}";
</script>

一旦你定义了它,连接到这个字符串以获得正确的路径,像这样

pieceFileName = guiPiecePre + SideChar[PieceCol[pce]] + PceChar[pce].toUpperCase() + ".png";

关键是,guiPiecePre 将有一个静态值(如果您检查源代码,您甚至可以在呈现的 HTML 中看到它)并且在需要时通过 JS 附加动态部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 2019-08-31
    • 1970-01-01
    • 2013-07-04
    • 2020-04-22
    相关资源
    最近更新 更多