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

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

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

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

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

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

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

Лично я не использую «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');