2014-10-01 3 views
0

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

 /* 
    | Request Booking (POST) 
    */ 
    Route::post('/booking/request-pay-booking', array(
     'as' => 'booking-request-pay-booking-post', 
     'uses' => '[email protected]' 
    )); 

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

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

Спасибо!

+0

Возможно, потому что маршрут является 'POST', и вы перенаправлены туда с помощью' GET'. –

ответ

0

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

1

Если вы сделаете какие-либо перенаправлением вы используете для пути, который вы хотите переадресовать метод GET, так что вы, вероятно, следует изменить для некоторого маршрута из, например:

Route::post(

к

Route::match(['GET', 'POST'] 

Таким образом, в Если вы перенаправите маршрут, который вы указали в вопросе, вы должны изменить его на:

Route::match(['GET', 'POST'], '/booking/request-pay-booking', array(
    'as' => 'booking-request-pay-booking-post', 
    'uses' => '[email protected]' 
)); 
+0

Спасибо, похоже, сейчас проблема с изменением (это означает, что она разрешила одну ее часть). Теперь он пытается перенаправить меня на страницу, которую я только что оставил (тот, у кого есть кнопка отправки), а не «новый» с данными post ... Моя маршрутизация вложенно под этим: Route :: group (array ('перед' => 'AUTH'), функция() { \t \t/* \t | группы защиты CRSF \t */ \t \t Route :: группа (массив ('перед' => 'ЧСФР'), function() { \t \t [.......] – commandantp

+0

@commandantp Трудно сказать, какая именно ваша другая проблема без полного кода. Вы должны проверить свою логику –

+0

Ye с, но это странно, что за этим сейчас ничего нет. Аутентифицированная группа является основной функцией laravel и CRSF. Это приносит мне страницу назад ... ммм ... у тебя была бы идея обойти? – commandantp

1

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

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

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

Чтобы преодолеть это, разрешите использовать 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' => '[email protected]' 
)); 

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

+0

Спасибо. Это мой маршрут перенаправления внутри моей функции postSignIn: 'if ($ auth) { // Переадресовать на целевую страницу; return Redirect :: предназначено ('/'); } else {' Это не говорит, если он получен или отправлен ... – commandantp

+0

Перенаправление, предназначенное для перенаправления на URL-адрес, к которому вы пытались добраться, с помощью метода GET. –

+0

О! Таким образом, он вернется к последнему GET и, очевидно, это не сработает, так как ему нужны аргументы. Как разрешить POST и GET? – commandantp

Смежные вопросы