Life isn't about finding yourself. Life is about creating yourself.
Una ninfómana es una mujer que piensa en sexo con la frecuencia de cualquier hombre promedio. A. Perich

Ajax en CakePHP 1.3

2010-05-09 10:53:23-05                  Esta entrada ha sido vista 432 veces.

Ciencia

La mayoría de los cambios en CakePHP 1.3 son en "background", es decir que hay mejor diseño y rendimiento pero los desarrolladores no lo "vemos" y no nos afecta. 

Quizás el cambio mas notorio está en los nuevos Helpers, pues en la versión 1.3 de CakePHP se incluye una especie de "Ajax Abstraction Layer", es decir que CakePHP deja de estar centrado en Prototype/Scriptaculous y ahora tiene un manejador "neutro" para cargar el framework javascript de nuestra preferencia: Prototype, jQuery o Mootools. 

Esto implica que los helpers Ajax y Javascript que usamos un chingo en Centauro y Karamelo están en deprecated y en su lugar se debe usar el nuevo JsHelper. Los métodos $ajax->div()  y $ajax->divEnd() que son muy útiles, los he pasado a mi querido GagsHelper para poder seguir usándolos.

Dado que en el pasado hemos tenido problemas de colisión de frameworks Javascript y además jQuery parece ser el framework más utilizado y tiene muchos plugins chidos he decidido eliminar Prototype de Karamelo y pasarlo todo a jQuery. 

Ejemplo de Ajax en CakePHP 1.3:

  1. # Cargo my framework en el Helper Js
  2. pubic $helpers = array('Js' => array('Jquery'));
  3.  
  4. # Para cargar las librerías En lugar de
  5. $javascript->script(array('jquery-min'));
  6.  
  7. #Ahora es
  8. $this->Html->script(array('jquery-min'));
  9.  
  10.  
  11. # En lugar de esto
  12. echo  $html->div('sidemenu').__('Subjects'True)$ajax->link($html->image('static/arrow_down.png',
  13. array('alt'=>__('Display Subjects'True)'title'=>__('Display Subject'True)))'/subjects/display',
  14.         array('update' => 'qn',
  15.               'loading'=>"Element.show('loading3');",
  16.               'complete'=>"Element.hide('loading3');Effect.Appear('qn')"),
  17.                Null,
  18.                False
  19.              );
  20.      echo '</div>';
  21.  
  22. echo $gags->imgLoad('loading3');
  23. echo $ajax->div('qn'array('style'=>'padding:3px')).$ajax->divEnd('qn');
  24.  
  25. #Ahora es
  26. echo $this->Html->div('sidemenu', __('Subjects'True)$this->Js->link($this->Html->image('static/arrow_down.png',
  27. array('alt'=>__('Display Subjects'True)'title'=>__('Display Subject'True)))'/subjects/display',
  28.          array('update'      => '#qn',
  29.                'evalScripts' => True,
  30.                'before'      => $this->Js->get('#loading3')->effect('fadeIn'array('buffer' => False)),
  31.                'complete'    => $this->Js->get('#loading3')->effect('fadeOut'array('buffer' => False)),
  32.                'escape'      => False
  33.                )));
  34. echo $gags->imgLoad('loading3');
  35. echo $gags->ajaxDiv('qn').$gags->divEnd('qn');
  36.  
  37. echo $this->Js->writeBuffer()# Write cached scripts

El método $this->Js->writeBuffer(); imprime las llamadas cacheadas de ajax y siempre va al final de la página. 
 

Para aplicar varios efectos a varios DIVs sólo se concatenan en la llamada, por ejemplo:

'before' => $this->Js->get('#loadImg')->effect('fadeIn', array('buffer' => False))  .
                   $this->Js->get('#list')->effect('fadeOut', array('buffer' => False))

Por último en CakePHP 1.3 los métodos Model->del() y Session->del() se eliminarons y ahora  son delete(), pero eso se cambia de volada usando M-x find-named-dir en Emacs.

Permalink: http://www.mononeurona.org/entries/view/aarkerio/2223


Comments Commentblogs:
1.- rnstux wrote:

Que chingon!!! Me quedo con CakePHP!! ¿Ya terminaste la migración del código? ¿Dónde esta la opción para resaltar el código PHP en centauro?

2010-05-09 11:40:03-05
2.- aarkerio wrote:

Falta migrar Centauro el Ajax de Centauro.

La función para resaltar el código todavía no está :&#45;&#40; pero podríamos usar geshi:

http://packages.debian.org/sid/php&#45;geshi

2010-05-10 16:00:05-05
New Commentblog
CAPTCHA Image




Join us!
Forgot your password?
This blog has been visited
36,602 times
aarkerio
Manuel Montoya estudió neuropsicología en la facultad y en el Instituto de Biomédicas de la UNAM. Trabajó en Compaq de México como diseñador de software, tiene diez años de experiencia en Java, Python, PHP, Ruby y SQL. Le interesan muchas cosas y neciamente le da por escribir sobre todas ellas.

Actualmente trabaja en Chipotle Software, desarrollando Karamelo, una herramienta e-Learning. Emacs y FluxBox son su editor y escritorio favoritos.
Powered by
Despabilando la MonoNeurona.org
Livechat
<-Nombre

reiken wrote:
http://tinyurl.com/782vp5u
4 days, 3 hours ago

Reiken wrote:
tienen backup en megaupload? http://tinyurl.com/6uarmrq
2 weeks, 6 days ago

aarkerio wrote:
Reiken: muchas gracias!! Fixed!
on 1/1/12

Reiken wrote:
http://tinyurl.com/7yffd32
on 1/1/12

fer wrote:
cualquier cosa ahi te echo un grito man. gracias por comunicarse ca..
on 16/12/11

fer wrote:
empiezo lo de dspace
on 16/12/11

fer wrote:
la otra semana
on 16/12/11

fer wrote:
por cierto
on 16/12/11

fer wrote:
weekend
on 16/12/11

fer wrote:
good
on 16/12/11


@vendaval lánzate por los tequilas!! Al fin que es viernes!
5 days, 13 hours ago
De CakePHP a Perl a Rails en el mismo día!! Chingonazo que soy!!
2 weeks ago
$sudo gem update ;-)
2 weeks, 2 days ago
Debian es la neta!
3 weeks ago
@rnstux Mochate con la liga para descargarlo!!
3 weeks, 6 days ago
Yea, Python o Ruby por la Syntactic sugar.
on 10/1/12
Inches steelers, no dieron el ancho
on 9/1/12
Inches mamertos!! no es guasa... no si, inchs mamertos ;-)
on 5/1/12
@thos, no tienes un ejemplo de paginación Ajax en rails con cofeescript? no me sale caón!!
on 3/1/12
por cierto alguien usa coffeescript en Rails?
on 31/12/11
Mis Albums
FirefoxjEdit.orgGimpOpenOffice.orgHacker
Top
Colectivo MonoNeurona.org © 2002-2011.