Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Прошу прощения за заголовок — не хватило символов.
Как пропустить на страницу «Спасибо за заявку» только тех, кто заполнил и успешно отправил форму обратной связи?
Мои маршруты (актуальные в данном вопросе):
// Отправка заявки
Route::post('/submit-request', [
'as' => 'submitConsultationRequest',
'uses' => 'Open\FeedbackController@submitConsultationRequest'
]);
// Страинца благодарности
Route::get('/thanks', [
'as' => 'thanksForConsultationRequest',
'uses' => 'MainController@renderThanksForConsultationRequestPage'
]);
Если сделать это таким образом, как приведено ниже, то URL::previous() будет являться не post-запрос отправки сообщения (thanksForConsultationRequest), а URL той страницы, с которой произошла отправка сообщения.
if (URL::previous() !== URL::route('submitConsultationRequest')) {
return redirect() -> back();
}
Изменено Gleb2708 (03.02.2018 10:04:00)
Не в сети
А если просто сделать редирект на эту страницу?
Не в сети
Редирект-то сделать можно, и я его делаю после успешной отправки сообщения, но нам нужно предотвратить то, чтобы кто-то, введя в поисковую строку соответствующий URL, попал на страницу благодарности — это может быть ошибочный засчёт конверсии.
И, кстати, я забыл добавить небольшой кусок кода в конец сообщения. Исправил это.
Не в сети
Как вариант - заносить отправившего юзера в БД, а на странице с благодарностью делать проверку. Или сделать мидлваре и в роуте его прописать.
Не в сети
Не в сети
Можно вместе с формой передавать какой-нить параметр, например flag, а уже в контроллере проверять его наличие
Не в сети
А ещё какие варианты есть? Может, в сессии записать?
если регистрации нет, параметр в сессии это самый очевидный вариант.
если есть регистрация и она обязательна, то надо менять какой-то атрибут пользователя и проверять его (через Gate)
Изменено artoodetoo (03.02.2018 11:13:28)
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Не в сети