Забрать значение поля TV с предыдущей страницы

Приветствую всех и вас, Василий, в частности. Давно читаю блог и должен сказать, что львиную долю различных нюансов и «филигранностей» нашел и увидел именно здесь. За что отдельное спасибо.

Теперь сам вопрос:

Есть некий документ, который представляет собой конечную страницу продукта. На этом документе есть несколько полей TV. С этого документа открывается форма расчета цены (Formit), которая расположена на новой странице и не является «вложенной» или следующей\предыдущей страницей относительно этого документа. Как на этой странице можно подставить в форму значения TV предыдущей страницы? Поделитесь, пожалуйста, кто и какие внедрял решения? Может быть есть что-то воде $modx->getObject('$id=«prev»');? Если да, то как оно выглядит и «каким макаром» его применять?

Заранее благодарен.
Wassi Wassinen
25 января 2013, 20:00
modx.pro
2
2 090
0

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

Василий Наумкин
26 января 2013, 08:11
0
Самый простой способ — ссылка с параметрами:
<a href="[[~15]]?tv1=[[*tv1]]&tv2=[[*tv2]]">форма</a>
tv1 и tv2 надо поменять на реальные параметры FormIt, в которые требуется подставить значение ТВ.

А на странице с FormIt обернуть его вызов в сниппет FormItWrapper:
$params = array_merge($_GET, $scriptProperties);
return $modx->runSnippet('FormIt', $params);
    Wassi Wassinen
    28 января 2013, 00:07
    0
    Василий, если можно, дайте ссылку на пример «обертывания». )
      Василий Наумкин
      28 января 2013, 03:59
      0
      Обёртыванием я называю создание сниппета, который будет готовить параметры для другого сниппета, и возвращать его вызов.

      Этот пример я как раз и дал в конце комментария. Но тебе, видимо, надо выставить плейсхолдер на странице — это еще проще.

      Создай сниппет mySnippet, и напиши там:
      if (!empty($_GET)) {
      	$modx->setPlaceholders($_GET, 'pl.');
      }

      Если ты перейдешь на страницу с вызовом этого сниппета по ссылке
      <a href="[[~15]]?tv1=[[*tv1]]&tv2=[[*tv2]]">форма</a>

      То на ней будут выставлены плейсхолдеры [[+pl.tv1]] и [[+pl.tv2]], которые ты можешь указать в своей форме расчёта.

      Префикс pl. указан для того, чтобы нельзя было через этот сниппет изменить другие важные плеёсхолдеры.

      Вот тут документация по modX::setPlaceholders().
        Wassi Wassinen
        28 января 2013, 04:09
        0
        Всё гениальное — просто. Спасибо, Василий! ))
      Wassi Wassinen
      28 января 2013, 00:21
      0
      Да, Василий, перевел денег на личный счет, но интересные «звездные» посты не могу видеть по-прежнему.
    Wassi Wassinen
    26 января 2013, 15:09
    0
    Спасибо, Василий. Я пытался передавать параметры в ссылке, но с помощью снипета getUrlParam. Все работало, но длинные значения и значения заканчивающиеся на «я» передавались с ошибками (заканчивались символом программного вопроса), хотя кодировка utf-8. Попробую последовать Вашему совету, хотя, пока что, не совсем понимаю, что значит обернуть вызов ))
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      7