Bueno yo hago peticiones asincrónicas a un contolador que llamo AjaxController y dentro tengo algo como
Código PHP:
Ver original<?php
class AjaxController extends Zend_Controller_Action
{
public function init()
{
$this->_helper->layout()->disableLayout();
if(!$this->getRequest()->isXmlHttpRequest()){
$this->_forward('index');
}
}
public function indexAction()
{
$this->_helper->viewRenderer->setNoRender(true);
}
public function fooAction()
{
$this->_helper->viewRenderer->setNoRender(true);
$foo = new Model_Foo; // modelo para trabajar la lógica
$result = $foo->result();
$this->getResponse()->setBody($result); // no se usa views/scripts/foo.phtml
}
public function barAction()
{
$bar = new Model_Bar; // modelo para trabajar la lógica
$this->view->bar = $bar->result(); // se usa el views/scripts/bar.phtml
}
}
Al principio indico en el init, que solo se permiten peticiones asincronicas y me baso buscando la cabecera
X-Requested-With: XMLHttpRequest, si no existe lo fuerza siempre a ver
indexAction que a su vez no imprime nada, si existe entonces llamo el método que pidió.
Ya mismo me regañaran y me diran que lo haga de otra forma, pero es hasta ahora la forma como lo hago y es bien fácil de trabajar.