我的FormIt挂钩被缓存,它在第一次之后每次运行都搞砸了

时间:2012-12-06 00:05:30

标签: caching modx modx-revolution formit

我将以下代码段连接到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;`

每次运行时都会递增模板变量并输出成功消息(尽管现在我使用该功能输出调试消息)。问题是,它只在保存片段后一次增​​加电视,从而刷新缓存。通常我会通过附加调用没有缓存的片段!它的名字,但它似乎不适用于FormIt钩子。如何才能使此代码生效?现在我将整个页面作为不可缓存的方式运行,但这显然不是最理想的。也许,有一种方法可以以未缓存的方式挂钩片段?从片段中调用片段为未缓存?

2 个答案:

答案 0 :(得分:0)

我正在做类似的事情 - 但是为了统计页面加载,它看起来就像你错过了最后一点:$ current-&gt; save();

<?php
$docID = $modx->resource->get('id');

$tvIdm = 32;
$tvm = $modx->getObject('modTemplateVar',$tvIdm );
$tvm->setValue($docID, $tvm->getValue($docID) + 1 );
$tvm->save();

答案 1 :(得分:0)

尝试在保存$ tv对象之前添加此内容

$ tv-&gt; _processed = false;

它是从modElement的属性派生而来的。