正在测试,这就是行为:我有一个带有表单的页面,任何人都可以使用它(无需登录),提交时,您将被重定向到下一个需要登录的页面作为用户。 这是路线:
/*
| Request Booking (POST)
*/
Route::post('/booking/request-pay-booking', array(
'as' => 'booking-request-pay-booking-post',
'uses' => 'BookingController@postRequestPayBooking'
));
只要您已登录BEFORE,一切正常。如果您在单击提交时是公开的,它会重定向到登录屏幕,一旦您单击登录,我会尝试重定向到该页面,但是我收到了一个MethodNotAllowedHttpException。 我一定错过了那些东西......
你会怎么处理?是因为它是一个POST,它将我从一个页面带到另一个页面而数据丢失了吗?
谢谢!
答案 0 :(得分:1)
如果你进行任何重定向,你用于你想要重定向GET方法的路径,那么你应该改变一些路由,例如:
Route::post(
到
Route::match(['GET', 'POST']
因此,如果您重定向到您提出问题的路线,则应将其更改为:
Route::match(['GET', 'POST'], '/booking/request-pay-booking', array(
'as' => 'booking-request-pay-booking-post',
'uses' => 'BookingController@postRequestPayBooking'
));
答案 1 :(得分:1)
因为您之前没有登录过。您的请求未成功完成,登录屏幕显示。
您的/预订/请求 - 付款预订网址的请求将存储在会话中,如果您在登录功能中使用重定向,那么它会在您登录之前返回您请求的页面,之后您已成功登录。
但不是通过GET而是通过POST。
要克服此问题,请允许GET和POST到此路线。
由于您只是通过邮件处理请求,因此请同时使用这两种方法。因此,后期数据应该存储在其他地方,例如;会话。
在会话
中存储数据Session::put('data', $data);
从会话中获取数据
$data = Session::get('data');
如果你这样做,那么该方法不依赖于某种方法,然后使用Marcin的解决方案;
Route::match(['GET', 'POST'], '/booking/request-pay-booking', array(
'as' => 'booking-request-pay-booking-post',
'uses' => 'BookingController@requestPayBooking'
));
小方法更改,因为方法处理get和post将方法的名称更改为requestPayBooking。
答案 2 :(得分:0)
感谢。结束做一些有效的事情:创建一个新的函数,我在提交表单时也重定向,在这个中我验证数据并在会话中存储输入。当VALIDATE通过时,我重定向到下一个视图,在该视图中,我从会话中提取信息,现在即使我通过登录屏幕,它也能正常工作。 :)