删除功能 Laravel 5.2
Posted
技术标签:
【中文标题】删除功能 Laravel 5.2【英文标题】:delete function Laravel 5.2 【发布时间】:2017-03-18 08:03:52 【问题描述】:我最近一直在学习 laravel 5.2,我做了一个删除函数,它应该从我的数据库中删除记录,但不是删除记录,而是在我的数据库中添加一个空白行
这是我使用的路线:
Route::resource('producten', 'ProductenController', ['only' => ['index', 'store', 'destroy', 'edit', 'update', 'create']]);
这是我使用的控制器功能
public function destroy(request $request , product $product)
$product->delete();
return redirect(Route('producten.index'));
这是我为它制作的表格。
Form::Open(['Route' => 'producten.destroy', $product], ['method' => 'delete'])
Form::Submit('delete')
Form::close()
当我查看源代码时,它说它使用的是 POST 方法而不是 delete 方法,并且当我添加($product)时我得到一个空白页,我还发现当我点击提交按钮时它转到我制作的 store 方法,我不知道为什么,
如果您需要更多信息,请告诉我,我会在问题中添加它
【问题讨论】:
首先,您是否将类导入为小写(request
而不是Request
)?其次,您希望如何将模型作为第二个参数传递给 destroy()?通常这将是一个$id
,然后你在方法中使用$product = product::find($id)
。
Devon:您可以使用模型绑定,然后将模型对象作为参数。
【参考方案1】:
路由和方法应该在同一个数组中,而不是在两个不同的数组中。
Form::Open(['method' => 'DELETE', 'route' => ['producten.destroy', $product]])
method_field('DELETE')
Form::Submit('delete')
Form::close()
【讨论】:
使用模型绑定时可以在路由中使用对象 好吧,如果是这样,没关系,但是在声明 Form::Open 时,您仍然必须使用唯一的数组来传递方法和路由。 @MarekSkiba 我更新了我的anwser,删除了与模型绑定相关的部分。很抱歉。【参考方案2】:我认为你的表单有问题。你可以试试这个:
<form action=" route('producten.destroy', ['product' => $product->id]) " method="POST">
csrf_field()
method_field('DELETE')
<button type="submit">Remove</button>
</form>
【讨论】:
以上是关于删除功能 Laravel 5.2的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 5.2 中从 url 中删除 public