laravel 无法删除记录
Posted
技术标签:
【中文标题】laravel 无法删除记录【英文标题】:Unable to delete record in laravel 【发布时间】:2020-01-04 22:28:48 【问题描述】:我正在尝试删除一条记录,但无法在控制器中使用删除功能。一切似乎都很好。
尝试使用资源控制器 destroy
功能以及自定义路由。但是表单不会发布到控制器,而是刷新在 URL 中显示令牌和方法。
以前,我使用 javascript 函数来确认删除,但它也不起作用。所以我切换到直接发布。
这是未提交的 Javascript 代码:
未捕获的类型错误:无法读取 null 的属性“提交”
但是,console.log(id)
给了我正确的 ID。
即使我在网站的任何地方都在使用这个 Javascript 函数,但在这个页面上它不起作用。
function confirmDeleteUserCartItem(id)
let choice = confirm("Are You Sure You Want To Delete This Item ?")
if (choice)
document.getElementById('delete-usercart-item-' + id).submit();
查看:尝试了 2 条路线
<form method="POST" action=" route('user.cart.delete', $item->id) ">
@csrf
@method('DELETE')
<button class="btn btn-danger">Delete</button>
</form>
<form method="POST" action="route('user.cart.destroy', $item->id)">
@csrf
@method('DELETE')
<button type="submit" class="remove">
<i class="far fa-trash-alt"></i>
</button>
</form>
这是我点击删除后在 URL 中得到的内容:
?_token=klYTBg3OBr0oLfTeS9tSGJwBepgLX8wtCsKRgMOR&_method=DELETE
【问题讨论】:
你的 web.php 路由文件是什么样子的? 奇怪的事情正在发生。我可以删除在第一条记录之后添加的记录。但是第一条记录没有被删除,只有页面重定向和令牌显示在 url 中。即使第一个记录是清除购物车后的另一项。 您能否检查是否可以使用 ::find() 检索特定记录的模型;方法? 【参考方案1】:如果可行,试试这个。我希望如果您的 route
和控制器 destroy
方法没问题,那么它应该可以工作 -
<form method="POST" action="route('user.cart.destroy', $item->id)"
onsubmit="return confirmDeleteUserCartItem()">
@csrf
@method('DELETE')
<button type="submit" class="remove">
<i class="far fa-trash-alt"></i>
</button>
</form>
还有你的javascript方法-
<script>
function confirmDeleteUserCartItem()
let choice = confirm("Are You Sure You Want To Delete This Item ?")
if (choice)
return true;
else
return false;
</script>
【讨论】:
【参考方案2】:解决了这个问题。 我在视图中使用的 html 模板中有另一个表单标签。 它正在停止删除表单以提交。
【讨论】:
以上是关于laravel 无法删除记录的主要内容,如果未能解决你的问题,请参考以下文章