1

我收到此错误“此路线不支持 GET 方法。支持的方法:POST。” 如果表格中有任何错误。

我可以成功发布到我的表单,但它在返回过程中抛出。

网页.php

Route::post('/services/book/hotel', 'HotelController@showbook');
Route::post('/services/book/hotelroom', 'HotelController@book');

book 功能相当长,但以

    if($responseSuccess){
        $error = [];
        $bookingDetail = json_decode($response['BookingDetail']);

        return Redirect::to(url('my-account'));
    } else {
        $error = $response['message'];
        $hotel = [];

        session()->flash('alert-class', 'alert-danger'); 
        session()->flash('message', $error); 

    // dd(__method__.'::'.__line__,get_defined_vars(),$request->input());
        return back()->withInput($request->input());
    }

如果我取消注释,dd我会看到就错误和输入而言,一切看起来都像我所期望的那样,但是当我点击返回时,我看到了。我究竟做错了什么?

我已经阅读了 slack 和其他网站上的数十篇文章,这些文章讨论了“这条路线不支持 GET 方法。支持的方法:POST”。back但是“返回”时似乎没有一个问题

在此处输入图像描述

我正在使用 PHP 7.2 和 Laravel/framework 6.2

在此处输入图像描述

如果我尝试将表单从 post 更改为 get,我会收到此错误,因为传递了很多数据。并且客户更喜欢在帖子中使用此内容,因此无法添加书签或通过电子邮件发送。

在此处输入图像描述

此页面传递了许多“隐藏”变量,我希望能够在需要时显示错误并且仍然具有变量。那不可能吗?

在此处输入图像描述

4

2 回答 2

1

back()帮助程序是使用该方法重定向到页面GET。如果它正在尝试,GET /services/book/hotel否则/services/book/hotelroom它将失败。

显示表单的页面的 url 是什么?

于 2020-01-06T22:54:23.647 回答
1

您可以使用HTTP 307 临时重定向

return back(307)->withInput();

更好的解决方案:

您需要更改显示表单的页面,而不是将<form>action 属性从POST更改为 :GET

Route::get('/services/book/hotel', 'HotelController@showbook');
Route::post('/services/book/hotelroom', 'HotelController@book');
于 2020-01-07T00:18:40.097 回答