Php 从Symfony组件调用JavaScript函数

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字符串(通过使用
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()).');');