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

Modal con Bootstrap y Ajax

15 de diciembre de 2015

Estoy desarrollando uno formulario en el que debo confirmar dos veces una acción antes de que se envíe el formulario.

Para esto estoy usando Modal de bootstrap. Hago dos validaciones antes de enviar el formulario, cada una con su respectivo modal. Y una de esas validaciones es una consulta a la Base de datos con Ajax. No tuve problema con eso. El problema surgió al momento de entrar al segundo modal de la siguiente validación.

Bueno si alguien me puede ayudar, o quizás recomendar alguna otra manera de confirmar las acciones de formulario, se los agradecería. Mi código es algo como esto:

$('#buttonUno').click(function(e){
 $.ajax({
         type:"GET",
         url:"url",
         dataType:"json",
         data:{ consultaUno: consultaUno},
             sucess: function(jsonData){
             //segunda validacion, segundo modal
             $('#confirm').on('show.bs.modal', function(e) {
            $(this).find('.btn-ok').attr('href', $(e.relatedTarget).data('href'));
 
         }
        });
});

Respuestas

#1

En el código que muestras veo un error en el método sucess, que debería ser success. Aunque supongo que será un error al copiar y pegar el código.

Por otra parte, el problema que veo es que quieres abrir el segundo modal, pero tu código hace lo contrario. El código on('show.bs.modal') significa: "si el modal se abre, me avisas para que ejecute este código". Pero tú lo que quieres hacer es "abre ahora mismo el modal que te diga".

Para eso tienes que usar el método .modal('show') sobre la ventana modal que quieras abrir:

$('#confirm').modal('show');

También puedes usar el método .modal('toggle') que muestra la modal si estaba oculta y la oculta si estaba visible.

@javiereguiluz

16 diciembre 2015, 19:40
#2

@javiereguiluz

Sabes como manipular un formulario en un modal con symfony 2.7.

La idea es que tengo un listado y cuando tenga que editar un elemento de ese listado se desplegue el modal con el formulario.

Me podrias orientar.

@dariongg

18 diciembre 2015, 14:59
#3

Creo que en el caso que comentas, usar Symfony o no es irrelevante. Lo importante es programar bien la parte JavaScript que muestra/oculta modales y la parte Ajax que hace peticiones.

Entrando un poco más en detalle:

  • Si el formulario es "estático", puedes generar su código como si fuera una página normal. Lo único diferente es que el código Twig que renderiza el formulario lo metes dentro de las etiquetas HTML del modal.
  • Si el formulario es "dinámico" y se debe generar dinámicamente en función de algún valor seleccionado, entonces debes hacer una petición Ajax al servidor. Lo único que te importa en Symfony es que tienes que utilizar el método $request->isXmlHttpRequest() para saber si la petición te viene vía Ajax (así devuelves un Response en vez de renderizar la plantilla Twig completa con el layout) y si tu aplicación es muy compleja, entonces también puedes usar FOSJsRoutingBundle para generar desde JavaScript rutas de tu aplicación Symfony (te vendrá bien para hacer las peticiones Ajax).

@javiereguiluz

18 diciembre 2015, 15:11