MethodNotAllowedHttpException выдается после входа пользователя в систему и перенаправления

Был тестирование вокруг, и это поведение: у меня есть страница с формой, любой может использовать ее (не нужно входить в систему), при отправке вы будете перенаправлены на следующий, для которого вам нужно войти как пользователь ,
Вот маршрут:

        /*
| Request Booking (POST)
*/
Route::post('/booking/request-pay-booking', array(
'as' => 'booking-request-pay-booking-post',
'uses' => 'BookingController@postRequestPayBooking'
));

Все работает, пока вы уже вошли в систему ДО. Если вы общедоступны, когда вы нажимаете «Отправить», он перенаправляет на экран входа в систему, и как только вы нажимаете «Войти», я пытаюсь перенаправить на страницу, но у меня возникает исключение MethodNotAllowedHttpException.
Я должно быть что-то там упускаю …

Как бы вы справились с этим? Это потому, что это сообщение POST переносит меня с одной страницы на другую, и данные теряются?

Спасибо!

0

Решение

Если вы делаете какое-либо перенаправление, которое вы используете для пути, который вы хотите перенаправить методом 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

Другие решения

Потому что вы не вошли в систему раньше. Ваш запрос не был успешно выполнен, и отображается экран входа в систему.

Запрос, т. Е. На ваш URL-адрес / booking / request-pay-booking, будет сохранен в сеансе. Если вы используете перенаправление, предназначенное для вашей функции входа в систему, он возвращает вас на страницу, которую вы запрашивали до входа в систему, после того, как вы успешно авторизовался

Но не через POST через GET.

Чтобы преодолеть это, разрешите и GET и POST к этому маршруту.

Поскольку вы обрабатываете запрос только по почте, используйте оба метода. Таким образом, почтовые данные должны храниться где-то еще, например; Сессия.

Хранить данные в сеансе

Session::put('data', $data);

Получить данные из сессии

$data = Session::get('data');

Если вы делаете это, то метод не полагается на определенный метод, который будет использоваться, тогда используйте решение Марцина;

Route::match(['GET', 'POST'], '/booking/request-pay-booking', array(
'as' => 'booking-request-pay-booking-post',
'uses' => 'BookingController@requestPayBooking'
));

Небольшое изменение, так как метод обрабатывает как get, так и после изменения имя метода на requestPayBooking.

1

Благодарю. Закончил делать то, что работает: создал новую функцию, которую я тоже перенаправляю при отправке формы, в этом я проверяю данные и сохраняю в сеансе входные данные. Когда VALIDATE проходит, я перенаправляю к следующему представлению, в котором я извлекаю информацию из сеанса, и теперь, даже если я прохожу через экран входа в систему, это работает. 🙂

0
По вопросам рекламы [email protected]