Laravel delete button with HTML form

前端 未结 4 1059
[愿得一人]
[愿得一人] 2021-01-06 10:01

I\'m using the HTML form, not Laravel Collective.

For now I\'ve successfully created a CRUD for a users in my CMS, but one thing bothers me:

How can I set a

相关标签:
4条回答
  • 2021-01-06 10:10

    option with "laravel form helper" and jquery

    <div class="actions">
        <a href="#" class="list-icons-item delete-action">
            <i class="icon-trash"></i>
        </a>
        {{ Form::open(['url' => route('admin.users.destroy', $user), 'method' => 'delete']) }}
        {{ Form::close() }}
    </div>
    
    
    <script>
        $(document).ready(function () {
            $('.delete-action').click(function (e) {
                if (confirm('Are you sure?')) {
                    $(this).siblings('form').submit();
                }
    
                return false;
            });
        });
    </script>
    
    0 讨论(0)
  • 2021-01-06 10:17

    You can update your code like:

    <a class="btn btn-danger" href="/admin/users/{{$user->id}}/delete" >Delete</a>
    

    OR you should delete user using route name like:

    <a href="{{ route('admin.user.delete', [$user->id]) }}" class="btn btn-xs btn-danger" onclick="return confirm('Are you sure?')">Delete</a>
    
    0 讨论(0)
  • 2021-01-06 10:23

    As you have stated it will be nice when a user clicks on the Delete button to show up confirmation popup for deleting the specific user. For this you have to use jquery and ajax. Change the following code:

    <a class="btn btn-danger" href="">Delete</a>
    

    to

    <a class="btn btn-danger delete_user" href="javascript:void(0);" id="{{$user->id}}">Delete</a>
    

    and put an event listener like:

    $('.delete_user').click(function(){
      if( confirm('Are you sure?') )
      {
        var id = $(this).attr('id');
        // Make an ajax call to delete the record and pass the id to identify the record
      }
    });
    
    0 讨论(0)
  • 2021-01-06 10:26

    It's not obvious from the code you posted, but your DELETE route expects DELETE method. As it should!

    But on your list you're trying to access it with GET method.

    Really you should just reuse the code from the edit page, which fakes DELETE method already.

    Something like this:

    ...
    <td>
        <a href="/admin/users/{{$user->id}}/edit" class="btn btn-primary">Edit</a>
        <form method="POST" action="/admin/users/{{$user->id}}">
            {{ csrf_field() }}
            {{ method_field('DELETE') }}
    
            <div class="form-group">
                <input type="submit" class="btn btn-danger delete-user" value="Delete user">
            </div>
        </form>
    </td>
    ...
    
    ...
    // Mayank Pandeyz's solution for confirmation customized for this implementation
    <script>
        $('.delete-user').click(function(e){
            e.preventDefault() // Don't post the form, unless confirmed
            if (confirm('Are you sure?')) {
                // Post the form
                $(e.target).closest('form').submit() // Post the surrounding form
            }
        });
    </script>
    
    0 讨论(0)
提交回复
热议问题