删除功能 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 删除外键

Laravel 5.2 更改用户密码功能

如何在 laravel 5.2 中从 url 中删除 public

用户从Laravel 5.2中的帐户删除后没有注销的原因

在 Laravel 5.2 中捕获保存和删除的最可靠方法是啥?

在 Laravel 5.2 中修改原生认证