Explicamos como instalar el plugin de Symfony que nos permite usar los helpers de ajax utilizando jQuery en lugar de Prototype.
Como sabemos Symfony desde su versión 1.0 ofrece helpers relacionados a funcionalidades AJAX, como ser, recargar solo un elemento de la página en lugar de toda, arrastrar elementos, autocompletar, etc. Pero debido a que Symfony viene con Prototype como framework javascript por defecto, esto helpers trabajan con Prototype.
Pero si decides trabajar en tus aplicaciones, proyectos, etc. solo con jQuery (como es mi caso) había que resignarse a perder la utilidad de estos helpers de ajax. Por suerte, existe un plugin de Symfony que nos da la capacidad de casi todos estos helpers que utilizaban Prototype, pero que utilizan jQuery. Este plugin es el sfJqueryReloadedPlugin.
Este plugin puede ser instalaldo de las 3 formas convencionales para instalarse un plugin, ya sea por svn, descargandose el paquete o bien, utilizando el comando php symfony plugin:install sfJqueryReloadedPlugin.
Para utilizar los helpers debes recordar importarlos con la llamada a la función use_helper():
<?php use_helper('jQuery');
?>
Y luego cuando quieras utilizar un helper, en vez de llamarlo de la manera tradicional con Prototype, como por ejemplo:
<?php echo link_to_remote(....);
?>
debes llamarlo de la siguiente manera:
<?php echo jq_link_to_remote(....);
?>
Con esto ya puedes utilizar los helpers de ajax, pero los cuales utilizan jQuery, puedes leer la documentación del plugin para ver cuales son todos los helpers disponibles.
Uno de los métodos más útiles para mi es el observe_field() el cual no viene en el plugin, pero gracias a jjoaco que ha posteado en el foro de symfony este método, tu puedes agregarlo al jQueryHelper.php para tenerlo también disponible.
<?php function jq_observe_field($name, $options = array()){
if(isset($options['with']))
{
$options['with'] .= "+'&'+$('#".$name."').attr('id')+'='+$('#".$name."').val()";
}
else
{
$options['with'] = "$('#".$name."').attr('id')+'='+$('#".$name."').val()";
}
return jq_javascript_tag("$('#".$name."').change(function(){".jq_remote_function($options).";});");
}
?>
y un ejemplo para utilizarlo sería:
<?php echo jq_observe_field('departament_id', array('update' => 'document_id',
'url' => 'module/action',
'with' => "'suc_id='+$('#suc_id').val()"
))
?>
Espero que les sirva.
Fuente: Symfony project


4 Comentarios:
DARIO:
23 de Diciembre de 2009 a las 00:49:01MUY BUENO EL APORTE HASHEADO....DE MUCHO INTERES..!!!!!!
Bitcoder:
30 de Diciembre de 2009 a las 01:16:58Excelente! voy a usarlo en el proyecto que estoy trabajando. Gracias por la info.
OScar:
10 de Mayo de 2010 a las 20:52:54Gracias, en Symfony 1.4 no vienen ya los helpers de javascript por defecto y este plugin es la alternativa ideal.
Wilder:
30 de Mayo de 2010 a las 03:55:06Gracias!!! dias tratando de encontrar una solucion para el ajax y solo me faltaba ese plugin gracias!!! salu2