由于 twig 在任何 javascript 之前呈现,我遇到了一个小问题。
我需要在从 JSON 数组接收到的 twig 中设置一个变量,但我遇到了一些问题,我觉得这应该很简单。
数据通过symfony通过json数组馈送到twig,并根据数组中的一个元素呈现不同的消息;这部分工作没有问题。
我能够将输出打印到 Twig 文件;效果很好。问题是我很难将它设置为一个 twig 变量,以便我可以在几个地方使用它。
这很好用:
$('.id').html(items[0].id);
并在此处正确打印到 Twig :
<div class="id"></div>
我试着做这样的事情:
{% set requestid = '<div class="id"></div>' %}
{{ requestid }}
但正如预期的那样,这只是渲染了没有值的 HTML。
我一直在尝试做这样的事情:
我在 Twig 上有这个:
{% set requestid = "request_holder" %}
{{ requestid }}
在 jquery 中我有这样的东西:
var reqid = items[0].id;
reqid.replace("request_holder",reqid);
我也尝试过这样的事情
var request_id = items[0].id;
window.location = request_id.replace("request_holder",request_id)
我觉得我少了一小块。
**为清楚起见进行编辑**
jquery 正在解析 JSON 数组。
我的值为 items[0].id
此处进行额外编辑 - 澄清我的困惑:稍微清理一下,以免让 future 的读者误入歧途
我相信[d]变量需要在 javascript 中分配,因为 twig,即 php,是在 javascript 之前生成的。
我一直试图在 javascript 中生成 Twig ,但无济于事。
这是我一直在尝试的:
var requestitem = items[0].id;
$('.id').html("{% set requestId = " + requestitem + " %} <br/> {{ requestId }}");
这将 requestId 定义为一个字符串并且只返回 + requestitem +
到页面上。
当我尝试这样做时(没有引号)
var requestitem = items[0].id;
$('.id').html("{% set requestId = requestitem %} <br/> {{ requestId }}");
Twig 无法识别requestitem
完全
我曾尝试引用 Twig 括号(例如 "{" + "%"
等),但这当然只会将它们打印到页面上而不会解释它们。
最佳答案
服务器端的 Twig 进程。它接受变量并将它们呈现为 HTML 和文本。浏览器中显示的只是 HTML/文本/和 Javascript。所以你的 set requestid = "request_holder"
和 {{ requestid}}
在到达浏览器之前只是变成了文本。
之后,您在前端拥有 HTML 和文本,Javascript 可以与之交互。如果你需要在前端改变这个id,它需要在Javascript中完成。
你用这个id做什么?
关于javascript - 从 json 数组设置 Twig 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49136605/