Php 从Symfony组件调用JavaScript函数
我创建了一个新的JSON字符串(通过使用Php 从Symfony组件调用JavaScript函数,php,javascript,symfony1,Php,Javascript,Symfony1,我创建了一个新的JSON字符串(通过使用JSON\u encode转换PHP数组),并将其存储在$siteTree中。。。将其输出到日志显示以下内容 [ { "attr": { "id": "node_1", "rel": "folder" }, "data": "New Title", "children": [ { "attr": { "id": "node
JSON\u encode
转换PHP数组),并将其存储在$siteTree
中。。。将其输出到日志显示以下内容
[
{
"attr": {
"id": "node_1",
"rel": "folder"
},
"data": "New Title",
"children": [
{
"attr": {
"id": "node_2",
"rel": "folder"
},
"data": "second document",
"children": []
}
]
}
]
所以我知道JSON的格式是正确的。我想做的是在javascript函数中使用该变量来创建一个使用JSON数据的对象。。。我正在模板中执行以下操作
<?php
use_helper('JavascriptBase');
echo javascript_tag('createTree('.$siteTree.')');
?>
函数已被调用,但JSON已将“
替换为"e;
。如何停止此操作
感谢您的帮助!Symfony自动执行输出转义,以帮助防止多种类型的XSS攻击 您可以通过配置禁用它,或者根据您使用的Symfony framework的版本,访问视图中的原始数据,如下所示:
$sf_data->getRaw('siteTree')
e、 g
如果这对您不起作用,您应该通过查阅Symfony文档以获取您的框架版本,搜索“输出转义”来找到所需的相关参考“好的。”。。所以我设法解决了这个问题。。。我就是这样做的……我忘记了json_编码,只是将一个数组传递给组件的模板 在模板中,我像这样处理它
echo javascript_tag('createTree('.json_encode($siteTree->getRawValue()).');');
然后输出正确的JavaScript
谢谢大家的帮助!最后到达那里你能给我们看一下
javascript\u tag()?
这是一个内置的symfony吗function@DrMolle:这是一个symfony函数:抱歉-我已经更新了帖子标题。。。也发现了这个->但是我从一个组件运行这个,并且renderText方法在一个组件中不可用。你必须对这里的术语非常认真json\u decode
生成json,您当前将其插入JavaScript的方式将使其成为JavaScript对象(在您的示例中实际上是一个数组)。我确信这就是你想要的,我只是想澄清一下。现在我得到->注意:未定义的索引:[{“attr”:{“id”:“node_1”,“rel”:“folder”},“data”:“New Title”,“children”:[{“attr”:{“id”:“node_2”,“rel”:“folder”},“data”:“second document”,“children”:[]}],考虑到我没有给你任何访问数组的代码,我认为您必须澄清错误的来源。变量$siteTree包含我上面文章中的第一部分代码。这就是在数组上运行Json_encode的结果
echo javascript_tag('createTree(' . $sf_data->getRaw('siteTree') . ')');
echo javascript_tag('createTree('.json_encode($siteTree->getRawValue()).');');