删除确认传递错误的用户id在laravel,如何修复它?



我想在laravel应用程序实现删除确认时,点击删除按钮。如果没有确认对话框,它可以正常工作,但当我添加javascript确认代码时不工作。

这是我的刀片文件

<a href="{{ route('user.destroy', $user->id)}}" class="dropdown-item" onclick="
var result = confirm('are you sure delete this?');
if (result) {
document.getElementById('delete_user').submit();
}
event.preventDefault();
"><i class="icon-bin text-danger"></i> Delete</a>
<form id="delete_user" action="{{ route('user.destroy', $user->id)}}" method="POST">
@method('DELETE')
@csrf
</form>

我使用原生onsubmit函数创建了一个表单。

<form method="POST" action="{{route('user.destroy', ['user' => $user])}}" accept-charset="UTF-8" style="display: inline" onsubmit="return confirm('Are you sure wanted to delete it?')">
@method('DELETE')
@csrf
<button type="submit" class="btn btn-danger btn btn-sm">
Delete
</button>
</form>

我一直在使用它为我的许多项目,它的工作很好。你能试试吗?

我试着在你的代码中找到错误,我把它整理出来了。

当您将delete_user添加到表单并在a标签中引用这些id时,表单的id需要是唯一的,否则它将删除删除错误的记录,因此我通过添加id(每个记录的id)来修复它,例如delete_user_{{$user->id}}

所以这是你的代码与错误修复。

<a href="{{ route('user.destroy', ['user' => $user])}}" class="dropdown-item" onclick="
var result = confirm('are you sure delete this?');
if (result) {
document.getElementById('delete_user_{{$user->id}}').submit();
}
event.preventDefault();
"><i class="icon-bin text-danger"></i> Delete</a>
<form id="delete_user_{{$user->id}}" action="{{ route('user.destroy', ['user' => $user]) }}" method="POST">
@method('DELETE')
@csrf
</form>

如果你遇到任何问题,请在下面评论

<a>中移除href属性。而且onclick必须是function

<a class="dropdown-item" onclick="deleteUser(event)"><i class="icon-bin text-danger"></i> Delete</a>

在文件底部定义删除函数

<script>
function deleteUser(event){
var result = confirm('are you sure delete this?');
if (result) {
document.getElementById('delete_user').submit();
}
event.preventDefault();
}
</script>

最新更新