Забрать значение поля TV с предыдущей страницы
Приветствую всех и вас, Василий, в частности. Давно читаю блог и должен сказать, что львиную долю различных нюансов и «филигранностей» нашел и увидел именно здесь. За что отдельное спасибо.
Теперь сам вопрос:
Есть некий документ, который представляет собой конечную страницу продукта. На этом документе есть несколько полей TV. С этого документа открывается форма расчета цены (Formit), которая расположена на новой странице и не является «вложенной» или следующей\предыдущей страницей относительно этого документа. Как на этой странице можно подставить в форму значения TV предыдущей страницы? Поделитесь, пожалуйста, кто и какие внедрял решения? Может быть есть что-то воде $modx->getObject('$id=«prev»');? Если да, то как оно выглядит и «каким макаром» его применять?
Заранее благодарен.
Теперь сам вопрос:
Есть некий документ, который представляет собой конечную страницу продукта. На этом документе есть несколько полей TV. С этого документа открывается форма расчета цены (Formit), которая расположена на новой странице и не является «вложенной» или следующей\предыдущей страницей относительно этого документа. Как на этой странице можно подставить в форму значения TV предыдущей страницы? Поделитесь, пожалуйста, кто и какие внедрял решения? Может быть есть что-то воде $modx->getObject('$id=«prev»');? Если да, то как оно выглядит и «каким макаром» его применять?
Заранее благодарен.
Комментарии: 7
Самый простой способ — ссылка с параметрами:
А на странице с FormIt обернуть его вызов в сниппет FormItWrapper:
<a href="[[~15]]?tv1=[[*tv1]]&tv2=[[*tv2]]">форма</a>
tv1 и tv2 надо поменять на реальные параметры FormIt, в которые требуется подставить значение ТВ.А на странице с FormIt обернуть его вызов в сниппет FormItWrapper:
$params = array_merge($_GET, $scriptProperties);
return $modx->runSnippet('FormIt', $params);
Василий, если можно, дайте ссылку на пример «обертывания». )
Обёртыванием я называю создание сниппета, который будет готовить параметры для другого сниппета, и возвращать его вызов.
Этот пример я как раз и дал в конце комментария. Но тебе, видимо, надо выставить плейсхолдер на странице — это еще проще.
Создай сниппет mySnippet, и напиши там:
Если ты перейдешь на страницу с вызовом этого сниппета по ссылке
То на ней будут выставлены плейсхолдеры [[+pl.tv1]] и [[+pl.tv2]], которые ты можешь указать в своей форме расчёта.
Префикс pl. указан для того, чтобы нельзя было через этот сниппет изменить другие важные плеёсхолдеры.
Вот тут документация по modX::setPlaceholders().
Этот пример я как раз и дал в конце комментария. Но тебе, видимо, надо выставить плейсхолдер на странице — это еще проще.
Создай сниппет mySnippet, и напиши там:
if (!empty($_GET)) {
$modx->setPlaceholders($_GET, 'pl.');
}
Если ты перейдешь на страницу с вызовом этого сниппета по ссылке
<a href="[[~15]]?tv1=[[*tv1]]&tv2=[[*tv2]]">форма</a>
То на ней будут выставлены плейсхолдеры [[+pl.tv1]] и [[+pl.tv2]], которые ты можешь указать в своей форме расчёта.
Префикс pl. указан для того, чтобы нельзя было через этот сниппет изменить другие важные плеёсхолдеры.
Вот тут документация по modX::setPlaceholders().
Всё гениальное — просто. Спасибо, Василий! ))
Да, Василий, перевел денег на личный счет, но интересные «звездные» посты не могу видеть по-прежнему.
Спасибо, Василий. Я пытался передавать параметры в ссылке, но с помощью снипета getUrlParam. Все работало, но длинные значения и значения заканчивающиеся на «я» передавались с ошибками (заканчивались символом программного вопроса), хотя кодировка utf-8. Попробую последовать Вашему совету, хотя, пока что, не совсем понимаю, что значит обернуть вызов ))
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.