Возвратный url и плейсхолдеры в параметрах Login.
Привет.
Пытался реализовать возможность возвращения пользователя на страницу, с которой его выбросило на страницу авторизации (например в случае истекшей сессис).
Решил передать id возвратной страницы в GET параметре «returnto». После чего на странице авторизации написал близкое к такому:
GET_args_to_placeholders это простой сниппет пытающийся забить GET параметры в одноименные плейсхолдеры с префиксом «get.».
Но Login ни в какую не хочет брать эти параметры и постоянно использует значение default=`66`.
Подскажите, пожалуйста, как можно реализовать подобный механизм. И ещё интересно было бы узнать почему может не работать плэйсхолдер в параметрах. Во многих других сниппетах я успешно подставлял плейсхолдеры в параметры и всё работало.
Пытался реализовать возможность возвращения пользователя на страницу, с которой его выбросило на страницу авторизации (например в случае истекшей сессис).
Решил передать id возвратной страницы в GET параметре «returnto». После чего на странице авторизации написал близкое к такому:
[[!GET_args_to_placeholders]]
[[!Login?
&loginResourceId=`[[+get.returnto:default=`66`]]`
]]
GET_args_to_placeholders это простой сниппет пытающийся забить GET параметры в одноименные плейсхолдеры с префиксом «get.».
Но Login ни в какую не хочет брать эти параметры и постоянно использует значение default=`66`.
Подскажите, пожалуйста, как можно реализовать подобный механизм. И ещё интересно было бы узнать почему может не работать плэйсхолдер в параметрах. Во многих других сниппетах я успешно подставлял плейсхолдеры в параметры и всё работало.
Комментарии: 4
Стал эксперементировать. Подставил тестовый снипет.
Попытка номер один:
Код сниппета test:
Попытка номер два:
Код сниппета test:
Попытка номер три:
Код сниппета test:
Не понимаю, каким образом значение в одной переменной в двух соседних строках имеет разное значение. При возвращении через return все влияния GET параметров будто игнорируются.
[[!Login?
&loginResourceId=`[[!test]]`
]]
Попытка номер один:
Код сниппета test:
return 66;
Результат: при авторизации попадаю на страницу 66.Попытка номер два:
Код сниппета test:
return $_GET['returnto'];
Результат: авторизуемся с get-параметром returnto=66. Никуда не перебрасывает.Попытка номер три:
Код сниппета test:
$value= 66 + $_GET['returnto'];
$modx->setPlaceholder('for_test', $value);
return $value;
Результат: Это уже бессмысленный код. Хотел проверить насколько удивительная работа кода может быть вообще. Забиваю в get-параметр returnto значение 11. В итоге: в плэйсхолдере for_test значение 77, но Login при авторизации кидает на ресурс 66.Не понимаю, каким образом значение в одной переменной в двух соседних строках имеет разное значение. При возвращении через return все влияния GET параметров будто игнорируются.
попробуй использовать постхук rtfm.modx.com/extras/revo/login/login.tutorials/login.using-pre-and-post-hooks
Попробовал постхуки, но и там GET параметры непонятно куда пропадают.
Пока решил проблему другим способом:
На странице вызываю сниппет isLoggedIn (идет вместе с Login).
Он использует метод $modx->sendUnauthorizedPage(); который работает таким необычным способом, что перебрасывает на страницу авторизации, но в адресной строке остается адресс старой страницы.
И если у Login просто убрать параметр &loginResourceId, то выходит, что при авторизации тебя кидает на страницу, откуда тебя выбросило.
Пока решил проблему другим способом:
На странице вызываю сниппет isLoggedIn (идет вместе с Login).
Он использует метод $modx->sendUnauthorizedPage(); который работает таким необычным способом, что перебрасывает на страницу авторизации, но в адресной строке остается адресс старой страницы.
И если у Login просто убрать параметр &loginResourceId, то выходит, что при авторизации тебя кидает на страницу, откуда тебя выбросило.
тупо берет циферку из настроек и показывает эту страницу (с помощью $modx->sendForward(вашициферки) )
$modx->sendUnauthorizedPage();
вообще, я еще больше не понял, что вам нужно в итоге
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.