javascript - 从 json 数组设置 Twig 变量

标签 javascript jquery ajax symfony twig

由于 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/

相关文章:

jquery - 仅更改某个类的一个元素的更简单方法

javascript - 选择单选按钮时隐藏输入

许多项目的 Javascript/jquery

ruby-on-rails - 在 Rails 中使用 ajax 实现 jquery ui 选项卡?

javascript - Dojo dGrid/dStore 实时更新

javascript - 无法通过 props 将事件处理程序发送到子元素

javascript - AJAX 函数检测 session 何时过期并注销

javascript - RoutingError(没有路由匹配[选项]

javascript - 跟踪并显示用户在我的网站上点击按钮的次数

javascript - MVC3 - 允许 View 呈现为 html 或 JS