Confirmar envio Sweet Alert Laravel

publicado por: Anonymous

Estoy tratando de eliminar un registro con doble confirmación de sweet alert desde un datatables, pero al seleccionar uno, siempre me envia el id 1, sin importar que sea el registro con el id 10, 20 o 30. A que se debe o que estoy haciendo mal?. Anexo codigo qu genera el listado

@foreach ($array as $row)
    <tr>
        <td>
            <img src="{{ asset('uploads/users/'.$row->login.'/image.png') }}" style="max-width:30px;">
            {{ $row->firstName.' '.$row->lastName }}
        </td>
        <td>
            {{ $row->email }}
        </td>
        <td>
            {{ $row->login }}
        </td>
        <td>

            <!-- Action buttons -->
            <div>
                {!! Form::open(array('route' => array($options['route'].'.destroy', $row->id), 'method' => 'DELETE', 'id' => 'myform'.$row->id)) !!}


                    <a href="{{ route($options['route'].'.show', $row->id) }}" class="btn btn-warning btn-sm"> 
                        <i class="la la-small la-edit"></i> 
                    </a>

                    <button type="button" id="delete" data-id="<?php echo $row->id; ?>" class="btn btn-danger btn-sm"><i class="la la-small la-trash"></i></button>

                {!! Form::close() !!}
            </div>
        </td>
    </tr>
@endforeach

y la función js que genera el Sweet alert

$('button#delete').on('click', function() {
        var id = $(this).attr('data-id');
        swal({
          title: "¿Desea eliminar el usuario?",
          text: "",
          type: "warning",
          showCancelButton: true,
          confirmButtonClass: "btn-danger",
          confirmButtonText: "Si!!",
          cancelButtonText: "No!!",
          closeOnConfirm: false,
          closeOnCancel: false
        },
        function(isConfirm) {
          if (isConfirm) {

            swal({
                title:'¡El usuario será eliminado!',
                text: '',
                type: 'success'
            }, 
            function() {
              $("#myform"+id).submit();
            });

          } else {

            swal("Cancelled", "El usuario no será eliminado!!", "error");

          }
        });

    })

solución

Tu problema es que estas repitiendo la misma id y eso no se debe hacer, recuerda que la id debe ser única, trabaja con clases para eso, .delete te sería más útil

Cambia esto

<button type="button" id="delete" class="btn btn-danger btn-sm"><i class="la la-small la-trash"></i></button>

por esto

<button type="button" class="btn btn-danger btn-sm delete"><i class="la la-small la-trash"></i></button>


$('.delete').on('click', function() {

        swal({
          title: "¿Desea eliminar el usuario?",
          text: "",
          type: "warning",
          showCancelButton: true,
          confirmButtonClass: "btn-danger",
          confirmButtonText: "Si!!",
          cancelButtonText: "No!!",
          closeOnConfirm: false,
          closeOnCancel: false
        },
        function(isConfirm) {
          if (isConfirm) {

            swal({
                title:'¡El usuario será eliminado!',
                text: '',
                type: 'success'
            }, 
            function() {
              $("#myform").submit();
            });

          } else {

            swal("Cancelled", "El usuario no será eliminado!!", "error");

          }
        });

    })

recuerda que también te puedes apoyar en los data atributos para agregar por ejemplo la id para identificar el botón donde se haya hecho clic, lo digo por el hecho de intentar identificar el formulario que vas a enviar.

Cambia esto también déjalo así:

{!! Form::open(array('route' => array($options['route'].'.destroy', $row->id), 'method' => 'DELETE', 'id' => 'myform'.$row->id)) !!}

a tu botón colocale este data atributo:

<button type="button" data-id="<?php echo $row->id; ?>" class="btn btn-danger btn-sm"><i class="la la-small la-trash"></i></button>

y tu switalert así:

$('.delete').click(function() {
var id = $(this).attr('data-id');

        swal({
          title: "¿Desea eliminar el usuario?",
          text: "",
          type: "warning",
          showCancelButton: true,
          confirmButtonClass: "btn-danger",
          confirmButtonText: "Si!!",
          cancelButtonText: "No!!",
          closeOnConfirm: false,
          closeOnCancel: false
        },
        function(isConfirm) {
          if (isConfirm) {

            swal({
                title:'¡El usuario será eliminado!',
                text: '',
                type: 'success'
            }, 
            function() {
              $("#myform"+id).submit();
            });

          } else {

            swal("Cancelled", "El usuario no será eliminado!!", "error");

          }
        });

    })

de esa manera identifica a que formulario enviar al momento de darle clic a un botón

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *