Создание пользовательского объекта ответа JSON с помощью Zend Action Helper ContextSwitch - PullRequest
9 голосов
/ 08 марта 2011

Обычно я добавляю закодированный объект json в тело ответа, однако теперь у меня есть ситуация, которая требует использования помощника действий ContextSwitch.

У меня есть Zend_Form, для которого требуются три различных контекста ответа:

  1. html - визуализировать форму как обычный html в макете.
  2. html-частичный - запрос ajax "get", который отображает только формуas html.
  3. json - ajax-запрос "post", который возвращает любые сообщения об ошибках проверки формы.

Для каждого контекста у меня есть 3 сценария просмотра.Хотя в двух HTML-контекстах может использоваться один и тот же сценарий представления, но я не понял, возможно ли это.

  • form.phtml
  • form.html.phtml
  • form.json.phtml

Представления html-контекста работают нормально, но представление json не выбирается.Каков наилучший способ переопределить поведение обратного вызова json по умолчанию или передать пользовательский кодированный объект в тело ответа?

Ответы [ 2 ]

6 голосов
/ 10 марта 2011

Лично я не использую «View» для генерации JSON-контента. В моем init() у меня есть что-то вроде этого:

$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->setAutoJsonSerialization(false)
    ->addActionContext('index', array('html', 'json'))
    ->initContext();

А по моему indexAction():

if ( true === $this->isAjaxJson() ) {
    $this->_helper->json(
        array(
            'response' => $myResponse,
            'message' => $myMesage
        )
    );
    return;
}

Надеюсь, что это поможет.

0 голосов
/ 14 марта 2013

это может помочь: $this->_helper->json->sendJson($data); в то время,

$data=array('data1'=>'val1','data2'=>'val2');

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