Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] cómo implementar ajax en mi proyecto symfony2

Estas en el tema de cómo implementar ajax en mi proyecto symfony2 en el foro de Symfony en Foros del Web. Hola amigos, llevo unas semanas iniciándome en el mundo de los frameworks, y más concretamente con Symfony2. Ya comienzo a tener bastante soltura con la ...
  #1 (permalink)  
Antiguo 11/11/2014, 13:18
 
Fecha de Ingreso: abril-2013
Mensajes: 75
Antigüedad: 11 años
Puntos: 2
cómo implementar ajax en mi proyecto symfony2

Hola amigos, llevo unas semanas iniciándome en el mundo de los frameworks, y más concretamente con Symfony2. Ya comienzo a tener bastante soltura con la metodología de trabajo de este interesante framework. Mi objetivo ahora es implementar algo de AJAX para darle un toque más profesional y vanguardista a mi aplicación.

Tengo una página que imprime un listado de ciudades ordenadas alfabéticamente, por ejemplo algo así:

*Barcelona
*Bilbao
*Madrid
*Pamplona
*Vitoria
*Zaragoza

Y tengo unos botones, de la A hasta la letra Z, en los que al pulsar sobre un botón de ellos, la página imprimá únicamente las ciudades que empiezan por la letra pulsada.

Es un mecanismo realmente sencillo, y estoy buscando tutoriales con los que pueda empezar, pero realmente me siento muy perdido. Espero que alguien pueda echarme un cable. Gracias de antemano.
  #2 (permalink)  
Antiguo 11/11/2014, 14:45
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: cómo implementar ajax en mi proyecto symfony2

Y cuál es el problema que tenés con el AJAX? El js se puede implementar igual que en cualquier HTML normal. Necesitás pasarle alguna variable del twig?

Si lo que buscás es un tutorial de AJAX, acá hay uno bueno: http://www.ajaxya.com.ar/
  #3 (permalink)  
Antiguo 12/11/2014, 04:53
 
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: cómo implementar ajax en mi proyecto symfony2

Te aconsejo este manual, yo he realizado peticiones ajax sin ningun tipo problema siguiendolo.
Espero que te sirva
  #4 (permalink)  
Antiguo 13/11/2014, 04:24
 
Fecha de Ingreso: abril-2013
Mensajes: 75
Antigüedad: 11 años
Puntos: 2
Respuesta: cómo implementar ajax en mi proyecto symfony2

Cita:
Iniciado por albertostudium Ver Mensaje
Te aconsejo este [URL="http://www.maestrosdelweb.com/curso-symfony-2-integrando-jquery/"]manual[/URL], yo he realizado peticiones ajax sin ningun tipo problema siguiendolo.
Espero que te sirva
Perfecto! Agradezco tu recomendación, estoy siguiendo los pasos de ese tutorial y he conseguido el efecto esperado!

Ahora me surge la necesidad de mejorar mi código. Ya que tengo 26 links que representan el abecedario (de la A a la Z) me gustaría evitar repetir líneas de código.

Código:
<div class="row">
  <div class="col-sm-12 col-xs-12">
        <a class="btn btn-info btn-xs" href="#" id="link_paises_a">A</a>
        <a class="btn btn-info btn-xs" href="#" id="link_paises_b">B</a>
         ......
        <a class="btn btn-info btn-xs" href="#" id="link_paises_z">Z</a>
      </div>
</div>
Código:
<script type="text/javascript">
  $(function() {
    $("#link_paises_a").click(function() {
      $("#paises").load("{{ path('paises_letra' , {'letra': 'a'}) }}");
    })
    
    $("#link_paises_b").click(function() {
      $("#paises").load("{{ path('paises_letra' , {'letra': 'b'}) }}");
    })

    .......

    $("#link_paises_z").click(function() {
      $("#paises").load("{{ path('paises_letra' , {'letra': 'z'}) }}");
    })
  });
</script>
Ya que de jQuery no tengo apenas conocimientos... ¿alguien podría enseñarme a cómo factorizar las 26 funciones de jquery en 1 sola? ¿O irremediablemente es necesario hacerlo así? Espero vuestras respuesta
  #5 (permalink)  
Antiguo 14/11/2014, 08:45
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: cómo implementar ajax en mi proyecto symfony2

Utiliza la funcion data de jQuery.

En el DOM debes hacer algo así:

Código HTML:
Ver original
  1. <div class="row">
  2.   <div class="col-sm-12 col-xs-12">
  3.         <a class="btn btn-info btn-xs letra" href="#" data-letra="a">A</a>
  4.         <a class="btn btn-info btn-xs letra" href="#" data-letra="b">B</a>
  5.          ......
  6.         <a class="btn btn-info btn-xs letra" href="#" data-letra="z">Z</a>
  7.       </div>
  8. </div>

He añadido una clase para localizar los botones y un atributo de clase data para almacenar la letra.

Ahora en jQuery simplemente debes hacer un listen al evento que desees y capturar lo que necesites:
Código Javascript:
Ver original
  1. $(".letra").on('click', function() {
  2.       $("#paises").load("{{ path('paises_letra' , {'letra': $(this).data('letra')}) }}");
  3.     })

Por cierto, es recomendable que TODO código de jQuery se englobe dentro de la funcion .ready() al document, para que el javascript se ejecute una vez la página (el DOM) esté lista.

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.   // Aqui vuestro código JQuery
  3. });
  #6 (permalink)  
Antiguo 14/11/2014, 10:07
 
Fecha de Ingreso: abril-2013
Mensajes: 75
Antigüedad: 11 años
Puntos: 2
Respuesta: cómo implementar ajax en mi proyecto symfony2

Cita:
Iniciado por bNd170 Ver Mensaje
Utiliza la funcion [URL="http://api.jquery.com/jquery.data/"]data [/URL] de jQuery.

En el DOM debes hacer algo así:

Código HTML:
Ver original
  1. <div class="row">
  2.   <div class="col-sm-12 col-xs-12">
  3.         <a class="btn btn-info btn-xs letra" href="#" data-letra="a">A</a>
  4.         <a class="btn btn-info btn-xs letra" href="#" data-letra="b">B</a>
  5.          ......
  6.         <a class="btn btn-info btn-xs letra" href="#" data-letra="z">Z</a>
  7.       </div>
  8. </div>

He añadido una clase para localizar los botones y un atributo de clase data para almacenar la letra.

Ahora en jQuery simplemente debes hacer un listen al evento que desees y capturar lo que necesites:
Código Javascript:
Ver original
  1. $(".letra").on('click', function() {
  2.       $("#paises").load("{{ path('paises_letra' , {'letra': $(this).data('letra')}) }}");
  3.     })

Por cierto, es recomendable que TODO código de jQuery se englobe dentro de la funcion .ready() al document, para que el javascript se ejecute una vez la página (el DOM) esté lista.

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.   // Aqui vuestro código JQuery
  3. });
Hola, he probado lo que me comentas, pero hay un problema, y es que estamos mezclando código javascript en código twig

Código:
{{ path('paises_letra' , {'letra': $(this).data('letra')}) }}
Esta página está desarrollada con el motor de plantillas TWIG, y al insertar el código jquery dentro del código TWIG casca.
Precisamente otra de las preguntas que formulé, es cómo poder solucionar este problema:
http://www.forosdelweb.com/f68/como-pasar-valor-variable-js-twig-1113556/
  #7 (permalink)  
Antiguo 14/11/2014, 12:15
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: cómo implementar ajax en mi proyecto symfony2

Epa, no me fijé la verdad.

¿Podrías pegarme el código con el cual generas los botones de la A a la Z?

¿O lo has hecho uno a uno a pelo?

Mi consejo es que incluyas el enlace directamente en la etiqueta del botón, dentro del HREF por ejemplo o lo metas tambien dentro de un data, por ejemplo "data-href" para evitar que si clickan antes de que el DOM esté listo, no se de un caso indeseado y cargue la página por método tradicional.
  #8 (permalink)  
Antiguo 17/11/2014, 07:46
 
Fecha de Ingreso: abril-2013
Mensajes: 75
Antigüedad: 11 años
Puntos: 2
Respuesta: cómo implementar ajax en mi proyecto symfony2

Cita:
Iniciado por bNd170 Ver Mensaje
Epa, no me fijé la verdad.

¿Podrías pegarme el código con el cual generas los botones de la A a la Z?

¿O lo has hecho uno a uno a pelo?

Mi consejo es que incluyas el enlace directamente en la etiqueta del botón, dentro del HREF por ejemplo o lo metas tambien dentro de un data, por ejemplo "data-href" para evitar que si clickan antes de que el DOM esté listo, no se de un caso indeseado y cargue la página por método tradicional.
Hola de nuevo, para generar los enlaces que representan el abecedario lo hago así:

Código:
<div class="row">
  <div class="col-sm-12 col-xs-12">
    {% for letter in 'a' | upper .. 'z' | upper %}
    <a class="btn btn-info btn-xs" id="link_paises_{{ letter | lower }}">{{ letter }}</a>
    {% endfor %}
  </div>
</div>
irremediablemente, para generar las jquery's debo hacerlo a mano

Código:
<script type="text/javascript">
  $(function() {
    $("#link_paises_a").click(function() {
      $("#paises").load("{{ path('paises_letra' , {'letra': 'a'}) }}");
    })

.....
    
    $("#link_paises_z").click(function() {
      $("#paises").load("{{ path('paises_letra' , {'letra': 'z'}) }}");
    })
  });
</script>
  #9 (permalink)  
Antiguo 24/11/2014, 02:38
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: cómo implementar ajax en mi proyecto symfony2

¿Porque dices que para generar el jQuery debes hacerlo a mano?

Twig puede hacerlo de igual forma eh.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.   $(function() {
  3.     {% for letter in 'a' | upper .. 'z' | upper %}
  4.     $("#link_paises_{{ letter|lower }}").click(function() {
  5.       $("#paises").load("{{ path('paises_letra' , {'letra': letter|lower }) }}");
  6.     })
  7.     {% endfor %}
  8.   });
  9. </script>

No entiendo que problema tienes xD
  #10 (permalink)  
Antiguo 24/11/2014, 07:50
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: cómo implementar ajax en mi proyecto symfony2

La mejor solución es separar Javascript de Twig, normalmente se mesclan por que necesitan pasar las "rutas" al JS. para existe un bundle que simplifica todo. Es de FOS (friends of symfony) https://github.com/FriendsOfSymfony/...s/doc/index.md

Se instala muy simple y sale funcionando :P
__________________
Mono programando!
twitter.com/eguimariano

Etiquetas: ajax, implementar, proyecto, symfony2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:38.