AJAX

De KumbiaPHP Framework Wiki

(Esta información ya no aplica en la versión beta2) Kumbia posee soporte para funciones AJAX con el framework Prototype y también sin él. Recordemos que prototype (http://prototype.conio.net) está incluida por defecto al igual que las funciones drag-and-drop (arrastrar y soltar), effects (efectos) y controls (controles) de Script.aculo.us.

El soporte para estas librerías, está por defecto en la línea que dice:

 <?kumbia_use_effects() ?>

en views/index.phtml esta función incluye los documentos javascripts necesarios para usarlas.


En la version 1.0 Spirit hay que agregar el siguiente partial:

 <?php View::partial('kumbia/prototype'); ?>

en views/index.phtml o entre las viñetas del head esta función incluye los documentos javascripts necesarios para usarlas.


link_to_remote

Permite hacer un llamado sencillo mediante AJAX que solicita un fragmento HTML y lo actualiza en un contenedor (div, span, td, etc) del documento actual.

 
<?php
echo link_to_remote("Cargar algo con AJAX", "update: midiv", "action:saludo/hola") ?>
<div id="midiv">Este texto será actualizado</div>

La función link_to_remote generalmente toma 3 parámetros:

  1. El Texto del enlace
  2. El id del objeto HTML que se va a actualizar en este caso midiv.
  3. La acción de la cual se obtendrán la información para actualizar.

Cuando el usuario hace clic sobre el vinculo la acción hola en el controlador saludo será invocada en segundo plano y cualquier información obtenida será reemplazada en el div. El controlador ‘controllers/saludo’ tiene una acción llamada hola:

 
<?php
class SaludoController extends ApplicationController {
   function hola(){
     #Indica que el resultado sera solo una parte de la vista actual
     $this-­>set_response('view');
   }//fin del metodo
}//fin de la clase

La implementación vacía del método indica que no hay lógica para esta acción sin embargo Kumbia carga automáticamente la vista con el nombre hola.phtml en views/saludo/ que contiene lo siguiente:

<h2>Esto es Kumbia con AJAX</h2>
<?php echo time() ?>

Al probarlo el texto Esto es Kumbia con AJAX y el timestamp actual aparecerán como por arte de magia en el div indicado.

Antes de la petición:

Img ajax1.jpeg

Luego de la petición:

Ajax2.jpg

form_remote_tag

form_remote_tag($action, $objeto_que_actualiza)

Permite crear un formulario que al ser enviado, genera una petición AJAX y no una petición normal. El parámetro $action indica que acción se está solicitando y el segundo parámetro el contenedor html donde se va a colocar el resultado de la petición. Todos los elementos del formularios son serializados y enviados remotamente por método GET por defecto al oprimirse cualquier botón de submit o de image dentro del formulario.

También puede recibir los parámetros before, success y oncomplete que tienen código javascript que sera ejecutado antes, después y al completar la transacción AJAX respectivamente.

Adicionalmente se puede usar el parámetro confirm para indicar que se debe realizar una confirmación antes de hacer la petición AJAX.

 <?php echo form_remote_tag("saludo/hola", "update: midiv") ?>
 Tu Nombre?: <?php echo text_field_tag("nombre") ?>
 <?php echo submit_tag("Envio") ?>
 <?php echo end_form_tag() ?>
 <div id="midiv">Este texto será actualizado</div>

Puede recibir 'n' parámetros adicionales de la etiqueta html 'form' para cambiar los atributos de esta. Se debe cerrar el formulario usando la funcion end_form_tag.

También se pueden agregar eventos javascript tales como success, before y oncomplete:

<?php echo form_remote_tag("saludo/hola", "update: midiv", "before:alert('Se ha enviado
 el Formulario')") ?>
 Tu Nombre?: <?php echo text_field_tag("nombre") ?>
 <?php echo submit_tag("Envio") ?>
 <?php echo end_form_tag() ?>
 <div id="midiv">Este texto será actualizado</div>