Возвратный url и плейсхолдеры в параметрах Login.

Привет.
Пытался реализовать возможность возвращения пользователя на страницу, с которой его выбросило на страницу авторизации (например в случае истекшей сессис).
Решил передать id возвратной страницы в GET параметре «returnto». После чего на странице авторизации написал близкое к такому:

[[!GET_args_to_placeholders]]
[[!Login? 
	&loginResourceId=`[[+get.returnto:default=`66`]]`
]]


GET_args_to_placeholders это простой сниппет пытающийся забить GET параметры в одноименные плейсхолдеры с префиксом «get.».

Но Login ни в какую не хочет брать эти параметры и постоянно использует значение default=`66`.

Подскажите, пожалуйста, как можно реализовать подобный механизм. И ещё интересно было бы узнать почему может не работать плэйсхолдер в параметрах. Во многих других сниппетах я успешно подставлял плейсхолдеры в параметры и всё работало.
Борис Котофан
21 июля 2015, 20:51
modx.pro
1 536
0

Комментарии: 4

Борис Котофан
22 июля 2015, 15:11
0
Стал эксперементировать. Подставил тестовый снипет.
[[!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 параметров будто игнорируются.
    Пётр Молчанов
    22 июля 2015, 16:55
    0
    попробуй использовать постхук rtfm.modx.com/extras/revo/login/login.tutorials/login.using-pre-and-post-hooks
      Борис Котофан
      22 июля 2015, 17:45
      0
      Попробовал постхуки, но и там GET параметры непонятно куда пропадают.
      Пока решил проблему другим способом:
      На странице вызываю сниппет isLoggedIn (идет вместе с Login).
      Он использует метод $modx->sendUnauthorizedPage(); который работает таким необычным способом, что перебрасывает на страницу авторизации, но в адресной строке остается адресс старой страницы.
      И если у Login просто убрать параметр &loginResourceId, то выходит, что при авторизации тебя кидает на страницу, откуда тебя выбросило.
        Пётр Молчанов
        22 июля 2015, 17:51
        0
        тупо берет циферку из настроек и показывает эту страницу (с помощью $modx->sendForward(вашициферки) )
        $modx->sendUnauthorizedPage();
        вообще, я еще больше не понял, что вам нужно в итоге
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4