Создайте объект JSON с помощью symfony 1.4 с полем с содержимым HTML - PullRequest
0 голосов
/ 05 января 2012

Я видел здесь несколько вопросов о почти одной и той же вещи, но, следуя их советам, я продолжаю вести себя одинаково.

Я создаю объект json в своем действии следующим образом:

return $this->renderText(json_encode(array(
            'html'  => addslashes($this->renderPartial('global/formWrapper',
                    array(
                        'form'  => $nareas,
                        'url'   => $this->generateUrl('new_promo_step2'),
                        'cancelUrl' => 'new_promo',
                          ))),
            'error' => true)));

и я получаю следующий ответ:

<html>
  The html content which is supposed to be in the "html" property of my json
  object...
</html>{"html":"None","error":true}

вместе с заголовком с Content-Type:text/html; charset=utf-8.

В моем запросе jQuery ajax я установилdataType как 'json' (и, конечно, я получаю неожиданную ошибку символа) и как 'text' (и я не получаю ошибки, но продолжаю получать искаженный json)

Я пытался использовать addslashes()(как в примере) и без этой функции;попытался использовать опцию ESC_RAW symfony и получил то же самое.

Я ожидаю получить что-то вроде этого:

{"html":"<html>Html content</html>","error":true}

Пожалуйста!любая помощь будет высоко ценится!

Спасибо!

1 Ответ

0 голосов
/ 05 января 2012

Для рендеринга частичного из действия вам нужно будет загрузить ваши частичные фрагменты как включение и использовать getPartial для извлечения его в ваш вызов renderText.

sfLoader::loadHelpers('Partial');
return $this->renderText(json_encode(array(
        'html'  => addslashes(getPartial('global/formWrapper',
                array(
                    'form'  => $nareas,
                    'url'   => $this->generateUrl('new_promo_step2'),
                    'cancelUrl' => 'new_promo',
                      ))),
        'error' => true)));
...