pdoPage "забывает" про &resources при переходе

Здравствуйте, гуру!
Вот вызов pdoPage:
[[!pdoPage?
                    &element=`pdoResources`
                    &parents=`5`
                    &resources=`[[!getIdsFromFilter]]`
                    &depth=`1`
                    &tpl=`str_detail`
                    &showHidden=1
                    &includeTVs
                    &limit=`10`
                    &maxLimit=`100`
]]
Перед ним стоит чанк с формой, которая отправляет POSTом данные для фильтрации. Сниппет getIdsFromFilter берет этот POST и возвращает список ID ресурсов.
Результаты поиска появляются верные, все хорошо, пагинация их верно считает, но, при переходе на любую страницу из этой выдачи, POST, естественно, сбрасывается, в &resources приходит пустота и pdoPage выводит все, что смог найти без учета найденных ресурсов.
Собственно, как его можно научить сохранять POST или &resources?
prefedor
12 февраля 2015, 09:18
modx.pro
1 491
0

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

Василий Наумкин
12 февраля 2015, 12:25
0
Ответ очевиден — нужно использовать $_GET.
    prefedor
    12 февраля 2015, 12:27
    0
    Я бы с радостью, но гет получится очень большой. Да и не хотелось бы показывать пользователю все это в адресной строке…
      Василий Наумкин
      12 февраля 2015, 12:30
      0
      Если нужно сохранить параметры при переходе между страницами — только GET. Как иначе ты дашь прямую ссылку на третью страницу с параметрами формы?

      Даже через сессию не получится. Так что выбирай — красота или функциональность.
        prefedor
        12 февраля 2015, 12:39
        0
        В том-то все и дело, что ссылка на результаты не нужна. Ресурс закрытый, все должно быть попрятано ))
        В любом случае, спасибо. Буду думать над гетом.
          Василий Наумкин
          12 февраля 2015, 12:42
          0
          Тогда сохраняй в сессию и обновляй там данные при новом POST.
    prefedor
    12 февраля 2015, 15:55
    0
    Стыдно. Стыдно мне, что сразу не додумался до сессий ))
    Может кому интересно будет:
    В сниппете getIdsFromFilter, когда выводим список айдишников, вместо
    return $strIds;
    стоило прикрутить
    $_SESSION['strIds'] = $strIds;
    Ну, и сам вызов pdoPage поменяется.
    &resources=`[[!getIdsFromFilter]]`
    Вызов getIdsFromFilter будет теперь перед pdoPage и в pdoPage будет вызов сниппета, который забирает сессию:
    return $_SESSION['sessName'];
    Этот костыль в виде сниппета пришлось вкручивать, потому что [[#SESSION.sessName]] отдавал сессию, сохраненную на позапрошлой странице.
    В общем, теперь это выглядит так:
    [[!getIdsFromFilter]]
    [[!pdoPage?
                        &element=`pdoResources`
                        &parents=`5`
                        &resources=`[[!getSessIdsStr]]` (тот самый вызов return $_SESSION['sessName'];)
                        &depth=`1`
                        &tpl=`str_detail`
                        &showHidden=1
                        &includeTVs
                        &limit=`10`
                        &maxLimit=`100`
    ]]
      Василий Наумкин
      12 февраля 2015, 17:09
      1
      0
      [[#SESSION.sessName]] — это кэшированный вызов.

      Можно попробовать [[!#SESSION.sessName]]
        prefedor
        12 февраля 2015, 17:27
        0
        Точно! Слона-то я и не приметил )) Работает, спасибо!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8