Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Mezclando código Twig con JavaScript en un proyecto Symfony2

7 de octubre de 2014

Ayuda: al momento de mostrar la variable id_img de JavaScript me sale error. ¿Cómo haría para poder mostrar una imagen con JavaScript?

$(function () {
   $(".btn-modal").on("click", function () {
   var id_img = $(this).attr("data-id");
 
$(".img-selected").html('<img src="{{asset("bundles/acmedemo/img/"+id_img+".jpg")}}" ');
 
   });
})

Respuestas

#1

El problema que veo en tu código es que estás mezclando en el mismo código algo que se ejecuta en el servidor (función asset() de Twig) con algo que se ejecuta en el navegador (la concatenación de la variable id_img de JavaScript).

La solución a este problema depende de cada aplicación. En algunos casos se ejecuta asset() en el servidor y luego el valor generado se manipula con JavaScript. En otros casos se ejecuta código JavaScript puro (existe por ejemplo un bundle muy bueno llamado FOSJsRoutingBundle que permite generar cualquier ruta de Symfony2 en el navegador).

En tu caso, optaría por una solución mucho más sencilla. Dado que parece que la ruta generada con asset() es sencilla y predecible, lo que yo haría es olvidarme de Twig y escribir a mano la parte fija de la ruta de la imagen:

$(function () {
  $(".btn-modal").on("click", function () {
    var id_img = $(this).attr("data-id");
 
    $(".img-selected").html('<img src="/bundles/acmedemo/img/" + id_img + ".jpg" />');
  });
})

@javiereguiluz

7 octubre 2014, 22:32