在RouteCollection.php第251行中的DELETE MethodNotAllowedHttpException:

时间:2017-05-12 07:34:37

标签: php laravel-5.4

您好我尝试在Laravel 5.4中删除我的评论,但不幸的是我收到此错误。真的无法解决问题所在。

这是我的表格:

<form action="{{route('comments.destroy', $comment->id) }}">
    <div class="form-group">
        <button type="submit" class="btn btn-danger">DELETE</button>
    </div>
    {{ method_field('DELETE') }}
</form>

这是我的路线:

// Comments
Route::post('/lots/{lot}/comments', 'CommentsController@store');
Route::get('/comments', 'CommentsController@show');
Route::get('comments/{id}/edit', ['uses' => 'CommentsController@edit', 'as' => 'comments.edit']);
Route::put('comments/{id}', ['uses' => 'CommentsController@update', 'as' => 'comments.update']);
Route::delete('comments/{id}', ['uses' => 'CommentsController@destroy', 'as' => 'comments.destroy']);
Route::get('comments/{id}/delete', ['uses' => 'CommentsController@delete', 'as' => 'comments.delete']);

这是控制器:

public function delete($id)
    {
        $comment = Comment::find($id);
        return view('comments.delete')->withComment($comment);
    }

public function destroy($id)
    {
        $comment = Comment::find($id);
        $comment->delete();

        return back();
    }

任何想法我做错了什么?

这是错误消息: enter image description here

2 个答案:

答案 0 :(得分:1)

我认为我发现了问题,它的表单操作的路由语法是错误的。 route helper

<form action="{{route('comments.destroy', ['id' => $comment->id]) }}">
    {{ csrf_field() }}
    <div class="form-group">
        <button type="submit" class="btn btn-danger">DELETE</button>
    </div>
    <input type="hidden" name="_method" value="DELETE">
</form>

答案 1 :(得分:0)

在我的情况下,我的错误是我没有在发送到视图的对象上设置id属性,这就是表单操作URL没有它的原因。

检查是否在 comment 对象中设置了 id 属性,因此URL解析为: ... / comments / #### < / strong>

例如

$photos = Photo::all()->select('id', 'name')->get(); return view('photos.index')->with('photos', $photos);