Search code examples
javascriptphplaravellaravel-8

How can I send a DELETE request when a button is clicked?


I am using the resource controller in Laravel 8 and I want to hit its delete method from a delete button. How can I create a button with method='delete'? I have to create this in JavaScript as the button is in a table and I have created with JS.

My Edit button is like this:

<a href='"+base_url+"/donner/"+user['donner_id']+"/edit'>
    <button class='btn btn-sm btn-outline-warning'>
        <i class='fa-solid fa-pen-to-square'></i>
        &nbsp;&nbsp;Edit
    </button>
</a>

For the delete button, I have to send a request with the delete method.


Solution

  • It's not possible to send a DELETE request directly from pure HTML. You can either use JavaScript to send the DELETE request, or some frameworks support passing the method as a parameter in a POST request body.

    <form action="/delete" method="POST">
        <input type="hidden" name="_method" value="DELETE" />
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
        <input type="submit" value="Delete">
    </form>
    

    This technique uses a form who's only visible input is a button. When the button is clicked it submits the form sending a POST request to the server. The server then detects the "_method" field and treats it as a DELETE request.

    You can learn more about method spoofing in the Laravel docs.