Создание пользовательского объекта ответа JSON с помощью Zend Action Helper ContextSwitch

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

У меня есть Zend_Form, который требует трех разных контекстов ответа:

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

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

  • форма.phtml, который
  • форма.формат html.phtml, который
  • форма.формат JSON.phtml, который

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

2 ответов


лично я не использую "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;
}

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


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

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