У меня есть следующий фрагмент кода, подключенный к форме электронной почты FormIt:
$tv = "taken" . (int)$hook->getValue('datetime');
$docID = $modx->resource->get('id'); //get the page id
$page = $modx->getObject('modResource', $docID);
$current = (int)$page->getTVValue($tv);
if (!$page->setTVValue($tv, $current + 1)) {
$modx->log(xPDO::LOG_LEVEL_ERROR, 'There was a problem saving your TV...');
}
$modx->setPlaceholder('successMessage','<h2 class="success">'.$current.'</h2>');
return true;`
Он увеличивает переменную шаблона при каждом запуске и выводит сообщение об успешном выполнении (хотя сейчас я использую эту функцию для вывода сообщения отладки). Проблема в том, что он увеличивает размер TV только один раз после сохранения фрагмента, тем самым обновляя кеш. Обычно я бы назвал фрагмент без кеша, добавив ! к его названию, но, похоже, это не работает для хуков FormIt. Как я могу заставить этот код работать? Прямо сейчас я запускаю всю страницу как некэшируемую, но это явно неоптимально. Возможно, есть способ перехватить сниппет без кэширования? Вызвать фрагмент из фрагмента как некэшированный?