Laravel Delete İşlemlerinde Link İle Silme Yöntemi

tarafından
152
Laravel Delete İşlemlerinde Link İle Silme Yöntemi
Güzel Hosting

Merhabalar,
Laravel’de biliyorsunuz DELETE işlemleri form üzerinden gelen DELETE methodu ile işlem görmektedir. Bu projelerde çok şık bir görüntü oluşturmamakla beraber yazılımı yazan arkadaşı ise yormaktadır.
JavaScript Kodunu alt kısımda paylaşıyorum Github
Örnek Kullanım:
<a href="posts/2" data-method="delete" data-token="{{csrf_token()}}" data-confirm="Emin Misiniz ?">

/*
 Taken from: https://gist.github.com/soufianeEL/3f8483f0f3dc9e3ec5d9
 Modified by Yusuf KAHRAMANER
 Modified by Ferri Sutanto
 - use promise for verifyConfirm
 Examples :
 <a href="posts/2" data-method="delete" data-token="{{csrf_token()}}">
 - Or, request confirmation in the process -
 <a href="posts/2" data-method="delete" data-token="{{csrf_token()}}" data-confirm="Are you sure?">
 */
(function(window, $, undefined) {
  var Laravel = {
    initialize: function() {
      this.methodLinks = $('a[data-method]');
      this.token = $('a[data-token]');
      this.registerEvents();
    },
    registerEvents: function() {
      this.methodLinks.on('click', this.handleMethod);
    },
    handleMethod: function(e) {
      e.preventDefault()
      var link = $(this)
      var httpMethod = link.data('method').toUpperCase()
      var form
      // If the data-method attribute is not PUT or DELETE,
      // then we don't know what to do. Just ignore.
      if ($.inArray(httpMethod, ['PUT', 'DELETE']) === -1) {
        return false
      }
      Laravel
          .verifyConfirm(link)
          .done(function () {
            form = Laravel.createForm(link)
            form.submit()
          })
    },
    verifyConfirm: function(link) {
      var confirm = new $.Deferred()
      var userResponse = window.confirm(link.data('confirm'))
      if (userResponse) {
        confirm.resolve(link)
      } else {
        confirm.reject(link);
      }
	  // swal({
	 	// title: link.data('confirm'),
	 	// type: 'warning',
	 	// showCancelButton: true
	  // }).then(function () {
		// confirm.resolve(link)
	  // });
      // bootbox.confirm(link.data('confirm'), function(result) {
      //     if (result) {
      //         confirm.resolve(link)
      //     } else {
      //         confirm.reject(link)
      //     }
      // })
      return confirm.promise()
    },
    createForm: function(link) {
      var form =
          $('<form>', {
            'method': 'POST',
            'action': link.attr('href')
          });
      var token =
          $('<input>', {
            'type': 'hidden',
            'name': '_token',
            'value': link.data('token')
          });
      var hiddenInput =
          $('<input>', {
            'name': '_method',
            'type': 'hidden',
            'value': link.data('method')
          });
      return form.append(token, hiddenInput)
          .appendTo('body');
    }
  };
  Laravel.initialize();
})(window, jQuery);