如何解决' MethodNotAllowedHttpException' laravel错误?

时间:2016-11-10 09:52:32

标签: php laravel methods laravel-5.2

我收到了错误

  

MethodNotAllowedHttpException

当我使用'发布'在我的路线:

Route::post('SeeDetail', [
        'uses' => 'DataController@SeeDetail',
        'as' => 'SeeDetail'
        ]);

但是,如果我正在使用'得到'在我的路线中,没有错误,但链接中有data_id(localhost / survey / public / SeeDetail?data_id = 1)。
你知道怎么让data_id从链接中消失(localhost / survey / public / SeeDetail)吗?

在我看来按钮如下:

<a href="{{ route('SeeDetail', ['data_id'=>$getData->data_id])}}" class="btn btn-default">

3 个答案:

答案 0 :(得分:2)

您发送get请求而非post请求。您需要使用get代替post。但您也可以在URL中传递参数,但不要在路线中指定。

试试这个:

Route::get('SeeDetail/{data_id}', [
    'uses' => 'DataController@SeeDetail',
    'as' => 'SeeDetail'
]);

Docs

答案 1 :(得分:1)

在路线上,你已经将它作为一种后期方法进行了测试。但是你作为get方法访问。如果你想要&#34;发布&#34;方法,尝试使用表单,否则将路由称为get而不是post。

答案 2 :(得分:1)

正如其他人提到的链接使用GET方法,因此如果您将路线定义为POST,Laravel无法与之匹配并抛出MethodNotAllowedHttpException

要在请求中传递一些其他数据,您可以使用隐藏字段的POST方法和表单。

<form method="POST" action="{{ route('SeeDetail') }}">
    {{ csrf_field() }}
    <input type="hidden" name="data_id" value="{{ $getData->data_id }}">
    <button type="submit" class="btn btn-default">Go</button>
</form>

但请记住,POST请求应该用于数据操作,之后浏览器会重定向到GET页面。通过这种方式,您将实现流畅的导航,而无需任何&#34;确认重新发送&#34;用户刷新页面时的对话框和问题。