我收到了错误
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">
答案 0 :(得分:2)
您发送get
请求而非post
请求。您需要使用get
代替post
。但您也可以在URL中传递参数,但不要在路线中指定。
试试这个:
Route::get('SeeDetail/{data_id}', [
'uses' => 'DataController@SeeDetail',
'as' => 'SeeDetail'
]);
答案 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;用户刷新页面时的对话框和问题。