首页 > 解决方案 > Laravel 8 使用引导模型删除数据

问题描述

我有一个用 Bootstrap 制作的表,我想用 bootstrap 模型确认删除数据。在没有模型的情况下删除工作正常,但是对于模型,删除按钮总是将最后一行数据发送到模型,无论单击哪一行删除按钮。

模型按钮

<a href="#" data-toggle="modal" data-target="#deleteModal" data-user="{{ $user }}"><i class="fe fe-trash text-danger fe-24"></i></a>

模态删除按钮

<form action="{{ route('admin.users.delete', $user) }}" method="post">
                            @csrf
                            <button type="submit" class="btn mb-2 btn-danger">Delete</button>
                          </form>

使用的js

    $('#deleteModal').on('show.bs.modal', function (event) {
  var button = $(event.relatedTarget)
  var recipient = button.data('user')
  
});

表foreach

<tbody>
                          @if ($users->count())
                            @foreach ($users as $user)
                              <tr>
                                <td>{{ $user->id }}</td>
                                <td>{{ $user->name }}</td>
                                <td>{{ $user->email }}</td>
                                <td>(478) 446-9234</td>
                                <td>159 address</td>
                                <td>
                                  @if ($user->user_role == 0)
                                    User

                                    @elseif ($user->user_role == 1)
                                    Editor
                                    @else Admin
                                  @endif
                                </td>
                                <td>{{ $user->created_at->format('M d, Y') }}</td>
                                <td>{{ $plans->find($user->plan_id)->name }}</td>
                                <td>
                                  @if ($user->expiration_date != null)
                                    {{ Carbon\Carbon::parse($user->expiration_date)->format('M d, Y') }}
                                    @else
                                    N/A
                                  @endif
                                </td>
                                <td>
                                  @if ($user->is_active == 1)
                                    <span class="text-success font-weight-bold">Active</span>
                                    @else
                                    <span class="text-danger font-weight-bold">Disabled</span>
                                  @endif
                                </td>
                                <td>
                                  <a href="{{ route('admin.users.edit', $user->id) }}"><i class="fe fe-edit text-secondary fe-24"></i></a>
                                  <a href="#" class="deleteModal" data-toggle="modal" data-target="#deleteModal" data-user="$user"><i class="fe fe-trash text-danger fe-24"></i></a>
                                </td>
                              </tr>
                            @endforeach
                          @endif
                        </tbody>

标签: javascriptlaravelbootstrap-4

解决方案


我假设您有一个 foreach 来为每个用户创建删除按钮 传递的 $user 将始终是最后一个 $user id

您需要传递被单击的 $user 并将其传递给表单的操作

尝试

var deleteModal = $('#deleteModal');
$('a').on('click', function (e) { // this is the "a" tag
    var userId = $(this).data('user'),
    var submitUrl = {!! url("/admin/users/delete/") !!}+userId;
    var form = $('#form'); 
    form.attr('action', submitUrl);
    });
  });

单击时,存储数据用户并创建提交并更改表单操作

希望这对您有任何帮助。


推荐阅读