Вызов функции JavaScript из компонента Symfony - PullRequest
2 голосов
/ 22 января 2011

Я создал новую строку JSON (путем преобразования массива PHP с использованием json_encode) и сохранил ее в $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.')');
?>

На странице вывода показано следующее

createTree([{&quot;attr&quot;:{&quot;id&quot;:&quot;node_1&quot;,&quot;rel&quot;:&quot;folder&quot;},&quot;data&quot;:&quot;New Title&quot;,&quot;children&quot;:[{&quot;attr&quot;:{&quot;id&quot;:&quot;node_2&quot;,&quot;rel&quot;:&quot;folder&quot;},&quot;data&quot;:&quot;second document&quot;,&quot;children&quot;:[]}]}]) 

Функция вызывается, но JSON заменил " на &quote;.Как я могу это остановить?

Спасибо за вашу помощь!

Ответы [ 2 ]

2 голосов
/ 22 января 2011

Symfony автоматически выполняет экранирование выходных данных, чтобы предотвратить несколько типов атак XSS.

Вы можете отключить его по конфигурации или в зависимости от используемой версии платформы Symfony получить доступ к необработанным данным в вашемВот как это выглядит:

$sf_data->getRaw('siteTree')

например,

echo javascript_tag('createTree(' . $sf_data->getRaw('siteTree') . ')');

Если это не сработает для вас, вы можете найти нужные ссылки, обратившись к документации Symfony для вашей версиифреймворк, поиск "выходной выход".

0 голосов
/ 22 января 2011

ОК .. Итак, мне удалось решить проблему ... вот как я это сделал ... Я забыл о json_encode и просто передал массив в шаблон компонента.

В пределахшаблон, который я обработал следующим образом

echo javascript_tag('createTree('.json_encode($siteTree->getRawValue()).');');

Затем вы получите правильный JavaScript.

Спасибо за помощь всем!Получил в итоге

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...