Hey Tim,

You could add something to disable the layout and set the proper headers:
In the controller, under init() or the action you want to execute:


$this->_helper->layout->disableLayout();
$this->_response->setHeader('Content-Type', 'application/json');
$this->view->json = array(
  'status' => 'ok',
  'message' => 'This is a status message.',
);


In application/scripts/view/index/index.phtml (or wherever your view scripts 
are):

<?php print $this->json; ?>

It's probably looking for error.phtml because it's missing the view scripts for the error controller to render the HTML for the error and exceptions. Try adding that and your debugging might be made a bit easier ;)


Hope this helps,
-Kizano
//-----
Information Security
eMail: [email protected]
http://www.markizano.net/

On 03/06/2011 10:49 PM, Tim wrote:
I can't seem to get my controllers to recognize that I only want them
to display json. Here's my controller

<?php

class IndexController extends Zend_Controller_Action {
         public function init() {
                 $this->_helper->contextSwitch()
                         ->clearContexts()
                         ->clearActionContexts()
                         ->setDefaultContext('json')
                         ->initContext('json');
         }

         public function indexAction() {
                 $this->view->assign(array(
                         'status' =>  'ok',
                         'message' =>  'This is the index action'
                 ));
         }
}

?>


All I want to do is, by default, output everything as json. I don't
want to have to send a "format=json" parameter in the URL.

According to 
http://framework.zend.com/manual/en/zend.controller.actionhelpers.html
I should be able to do this, but the above controller results in the
error

Fatal error: Uncaught exception 'Zend_View_Exception' with message
'script 'error/error.phtml' not found in path

What am I missing?

Thanks,
Tim

Reply via email to