lunes, 11 de junio de 2007

Una de Axaj: haciendo que los Ajax Request no recarguen todo

CakePHP incluye un Helper para Ajax y cosas como el PaginatorHelper hacen uso de Ajax.

Yo no es que tenga mucha idea del asunto, pero al hacer mis primeros experimentos de paginación me encontré con el problema de que en vez de actualizarse los listados, se me actualizaba toda la página en el espacio del listado.

La solución es básicamente decirle al controlador que cuando reciba una petición desde Ajax que genera la vista teniendo eso en cuenta. Después de reinventar la rueda varias veces, resulta que lo único que hay que hacer es añadir esto a los controladores que tengan vistas que usan Ajax:


var $components = array ('RequestHandler');

function beforeFilter () {
$this->RequestHandler->startup ($this);
}


Y, si aún así, necesitas controlar peticiones Ajax en algún punto del controlador o en alguna acción, no tienes más que hacer un simple:


if ($this->RequestHandler->isAjax ()) {
// Es Ajax
} else {
// Es otra cosa
}

No hay comentarios: