laravel 5.4 RouteCollection.php 中的 MethodNotAllowedHttpException(第 251 行)

laravel 5.4 MethodNotAllowedHttpException in RouteCollection.php (line 251)

我是 laravel 的业余爱好者。我使用 laravel 5.4。所以我想在没有表单绑定的情况下删除进程,但我有这样的错误消息。请告诉我如何解决这个问题。

路线:

Route::delete('test/{id}','TestController@destroy');

我的表格:

<td><button type="button" class="btn"><a href="{{URL::to('coba/test/'.$post->id.'/edit') }}" >Edit</a></button><button type="button" class="btn"><a href="{{ action('TestController@destroy', $post['id']) }}" method="post" >Hapus</a></button>{{ csrf_field() }}{{ method_field('DELETE') }}
    </td>

我的控制器:

public function destroy($id)
{
   $post = Post::find($id);
   $post->delete();
   return redirect()->to('coba/test');`
}

锚点 html 元素上的 Href 将导致 GET 调用,但您的路由需要 Delete 调用。您有一些方法可以确保您会导致删除调用。

最常见的方法之一是使用表单而不是 post 将数据发送到您的服务器。

删除

    {{ Form::open(['url' => 'test/'.$post->id, 'method' => 'DELETE']) }}
    {{ Form::button('delete', ['type' => 'submit', 
                               'class' => 'btn']) }}
    {{ Form::close() }}

编辑

    {{ Form::open(['url' => 'coba/test/'.$post->id.'/edit', 'method' => 'POST']) }}
    {{ Form::button('delete', ['type' => 'submit', 
                               'class' => 'btn']) }}
    {{ Form::close() }}

为了最佳实践,我建议只使用一次 {{ Form::open(...) }} {{ Form::close() }} 并重构您的控制器代码,以便它可以从按钮读取值并将其转换为 post 的相应 ID,这样您就不会您的代码中有多个 html 表单。