Skip to content

Instantly share code, notes, and snippets.

@dugajean
Last active September 9, 2016 13:20
Show Gist options
  • Save dugajean/35ac3cfd53106b15a31be4dc6b48f4e2 to your computer and use it in GitHub Desktop.
Save dugajean/35ac3cfd53106b15a31be4dc6b48f4e2 to your computer and use it in GitHub Desktop.
// Credits go to Jeffrey Way.
(function() {
var laravel = {
initialize: function() {
this.methodLinks = $('a[data-method]');
this.registerEvents();
},
registerEvents: function() {
this.methodLinks.on('click', this.handleMethod);
},
handleMethod: function(e) {
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;
}
// Allow user to optionally provide data-confirm="Are you sure?"
if (link.data('confirm')) {
if (!laravel.verifyConfirm(link)) {
return false;
}
}
form = laravel.createForm(link);
form.submit();
e.preventDefault();
},
verifyConfirm: function(link) {
return confirm(link.data('confirm'));
},
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();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment