Hola compañero
Para cakePHP 2.x los helpers ('Ajax','Javascript') no estan en el core, asi que en su lugar debes usar el helper 'Js'
En este ejemplo que te daré veremos como hacer un formulario que use AJAX en cakePHP con Jquery, es una explicación superficial sólo con los conceptos básicos, lejos de ser un tutorial y tengo como supuesto que tienes conocimientos de controladores y vistas, así como de la estructura de las carpetas de cakePHP.
Requisitos:
Para nuestro controlador
Código PHP:
public $components = array('RequestHandler');
public $helpers = array('Js','Html', 'Form');
para el layout necesitamos Jquery
Código PHP:
echo $this->Html->script(array(
'jquery',
));
Hacer el formulario
Creamos el formulario iniciando con la siguiente linea
Código PHP:
echo $this->Form->create(false, array(
'default' => false,
'id'=>'contactoForm'
));
http://book.cakephp.org/2.0/en/core-...pers/form.html
Ahora pones los elementos del form tal como la desees eso no afecta el funcionamiento que buscamos.
Para hacerlo ajax debemos hacerlo algo como esto:
Código PHP:
echo $this->Js->submit('Enviar', array(
'update'=>'#divXactualizar',
'url' => array('controller' => 'tuControlador', 'action' => 'tuAccion'),
));
Fíjate como en lugar de usar el submit común, ahora hacemos uso del JsHelper
http://book.cakephp.org/2.0/en/core-...elpers/js.html
algo bien importante es fijarnos en el parametro
'update' por él, pasaremos el div a donde vamos a actualizar la respuesta de
'url'
Así que en tu vista no olvides tener
Código HTML:
<div id="divXactualizar"></div>
Algo aun más importante es imprimir el buffer ya que sin esto no servirá el AJAX ni nada
En tu vista debes tener:
Código PHP:
echo $this->Js->writeBuffer();
La documentación recomienda que sea justo antes de la etiqueta
En lo personal me ha funcionado aun cuando no esta en esa posición
Con estos sencillos pasos tienes funcionando un formulario y haces uso de AJAX
En caso de sólo requerir
un link es más sencillo aún:
Código PHP:
echo $this->Js->link('Page 2', array('page' => 2), array('update' => '#content'));
Esa linea funciona, pero en la documentación del JsHelper se explica mejor
Saludos y espero sirva.