Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/08/2012, 15:35
arhego
 
Fecha de Ingreso: febrero-2012
Mensajes: 37
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: utilizacion ajax cakephp 2.0

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-libraries/helpers/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-libraries/helpers/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
Código HTML:
</body> 
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.