AJAX
(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:
- El Texto del enlace
- El id del objeto HTML que se va a actualizar en este caso midiv.
- 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:
Luego de la petición:
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>