存储的数据不会被破坏

时间:2019-04-06 09:10:16

标签: laravel laravel-5.8

我已经使用资源来生成路线。

路线为:

Route::resource('/','TodoController');

我正在尝试删除存储在数据库中的待办事项。

该视图的代码为:

<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>

而且,控制器的代码是:

public function destroy(Todo $todo)
{
    $todo->Todo::find($id);
    $todo->delete();

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

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

4 个答案:

答案 0 :(得分:0)

尝试一下

    CUDA_ARRAY3D_DESCRIPTOR arrayDesc = { };
    arrayDesc.Width = extent.width;
    arrayDesc.Height = extent.height;
    arrayDesc.Depth = 0;
    arrayDesc.Format = CU_AD_FORMAT_UNSIGNED_INT8;
    arrayDesc.NumChannels = 4;
    arrayDesc.Flags = CUDA_ARRAY3D_COLOR_ATTACHMENT;

    CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC mipmapArrayDesc = { };
    mipmapArrayDesc.arrayDesc = arrayDesc;
    mipmapArrayDesc.numLevels = 1;
    mipmapArrayDesc.offset = 0;

    CUDA_DRVAPI_CALL(cuExternalMemoryGetMappedMipmappedArray(&m_mipmapArray, m_extMem, &mipmapArrayDesc));

在您的控制器方法中,应该是这样,

<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>

在这里,您必须将查询结果存储在变量中并对其执行一些操作。与public function destroy($id) { $todo = Todo::findOrFail($id); $todo->delete(); return redirect()->route('index'); } save()方法相同。

希望这会有所帮助:)

答案 1 :(得分:0)

将路线更改为:

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>

您的控制器:

public function destroy(Todo $todo, $id)
{
    $todo = Todo::findOrFail($id);
    $todo->delete();

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

答案 2 :(得分:-1)

如下更改控制器功能:

 public function destroy($id)
 {
        //
        $todo->Todo::find($id);
        $todo->delete();
        return redirect()->route('index');
 }

答案 3 :(得分:-1)

我认为您的路线未正确注册。我将待办事项资源注册为:

Route::resource('todos', 'TodoController');

然后在您的表单中通过其路由名称引用destroy动作:

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

最后,在您的控制器中,您已经有了Todo模型的实例,因此您不必手动调用find方法。

public function destroy(Todo $todo)
{
    $todo->delete();
    return redirect()->route('index');
}