Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/01/2009, 16:08
CAT Shannon
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: [CakePHP] Formularios con Ajax

Me ha costado un poco entender qué es lo que quieres porque a la vista del código que presentas ya casi lo tienes.
Lo haces casi todo excepto una cosa. El último paso de tu proceso es mostrar la capa results, que por defecto esta oculta, pasando el parámetro 'loading' => 'Element.hide("refreshArea")' al $ajax->submit .
La idea es que cuando utilizas el helper $ajax hagas una actualización del contenido de un elemento. ¿Cómo índicas que elemento quieres actualizar? Pasandole a $ajax->submit en el parámetro $options el valor 'update' => 'idDelElemento'. Esto vale para casi todos los métodos del helper $ajax. Vamos, que quedaría tal que así:
Código PHP:
<?php echo $ajax->submit('Votar', array('div' => false'url' =>"/polls/add/"'update' => 'results''indicator' =>'loading''loading' => 'Element.hide("refreshArea")''complete' => 'Effect.Appear("results")'));
Si la capa results no tuviese contenido no sería necesario que estuviese oculta de primeras y así luego no habría que hacerla aparecer.

Vale, y ahora, ¿cómo rellenas el contenido de results? La llamada a /polls/add/ genera una llamada a un view. Lo que tienes que hacer es, en el método add del controlador polls, las consultas necesarias para obtener los datos que quieres y luego renderizar una vista (no tiene porque ser la de [I]/polls/add[I]) indicando que el método de renderizado es ajax.

El método add del controlador polls quedaría más o menos así:
Código PHP:
public function add($id null){
    
// ...
    // las operaciones de añadir el voto
    // ...
    
    // Haces las consultas para obtener los resultados de la encuesta
    // ...

    // y luego seteas el valor
    
$this->set('resultados'$resultadosDeLaEncuesta);

    
// Renderizas la vista 'add' a través de ajax
    
$this->render('add''ajax');

Básicamente lo más importante de todo esto es el hecho de usar el parámetro 'update' en el helper ajax.
Échale un ojo al capítulo de la guía oficial http://book.cakephp.org/view/208/AJAX y no te limites a copiar lo que yo te he puesto aquí porque además de estar incompleto puede que tenga errores.
Mírate también el API: http://api.cakephp.org/1.2/class_ajax_helper.html

Un saludo.