Laravel 存储的数据不会被销毁

Laravel 存储的数据不会被销毁,laravel,laravel-5.8,Laravel,Laravel 5.8,我已使用资源生成路由 路线是: Route::resource('/','TodoController'); 我正在尝试删除存储在数据库中的todo任务 视图的代码为: <form action="{{ route('destroy',['$todo->id']) }}" method="POST"> @csrf {{ method_field('delete') }} <button type="button" class="btn btn-p

我已使用资源生成路由

路线是:

Route::resource('/','TodoController');
我正在尝试删除存储在数据库中的todo任务

视图的代码为:

<form action="{{ route('destroy',['$todo->id']) }}" method="POST">
    @csrf
    {{ method_field('delete') }}
    <button type="button" class="btn btn-primary">Yes</button>
    <input type="hidden" name="_method" value="DELETE">
</form>

我无法在单击按钮时删除存储的任务。我做错了什么?

我认为您的路线没有正确注册。我将todo资源注册为:

Route::resource('todos','TodoController');
然后在您的表单中,通过路由名称引用销毁操作:


@csrf
@方法('DELETE')
对
最后,在控制器中,您已经有一个Todo模型的实例,因此您不必手动调用find方法

公共功能销毁(Todo$Todo)
{
$todo->delete();
return redirect()->route('index');
}
试试这个

<form action="{{ route('destroy', '$todo->id') }}" method="POST">
    @csrf
    @method('DELETE')
    <button type="button" class="btn btn-primary">Yes</button>
    <input type="hidden" name="_method" value="DELETE">
</form>
在这里,您必须将查询结果存储在变量中,并对其执行一些操作。它与
save()
update()
方法相同

希望这有帮助:)

将您的路线更改为:

Route::resource('todos','TodoController');
这样,laravel将声明TodoController所需的所有路由

在按钮标签中,您需要在类型属性中添加“提交”。您需要在route方法中将id作为参数传递。将您的表格更改为:

<form action="{{ route('destroy', $todo->id) }}" method="POST">
    @csrf
    @method('DELETE')
    <button type="submit" class="btn btn-primary">Yes</button>
</form>

此代码
$todo->todo::find($id)毫无意义。它应该是
$todo=todo::find($id)
你能分享php artisan route:list的输出吗?@Joe它没有work@mdexp下载此文件以查看路由列表$id变量从何而来?现在一切都很好,我将尝试并让您知道
Route::resource('todos','TodoController');
<form action="{{ route('destroy', $todo->id) }}" method="POST">
    @csrf
    @method('DELETE')
    <button type="submit" class="btn btn-primary">Yes</button>
</form>
public function destroy(Todo $todo, $id)
{
    $todo = Todo::findOrFail($id);
    $todo->delete();

    return redirect()->route('index');
}