Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 我的FormIt钩子被缓存,它';在第一场比赛之后,他每一次都搞砸了_Caching_Modx_Modx Revolution_Formit - Fatal编程技术网

Caching 我的FormIt钩子被缓存,它';在第一场比赛之后,他每一次都搞砸了

Caching 我的FormIt钩子被缓存,它';在第一场比赛之后,他每一次都搞砸了,caching,modx,modx-revolution,formit,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->s

我将以下代码片段连接到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=“take”。(int)$hook->getValue('datetime');
$docID=$modx->resource->get('id')//获取页面id
$page=$modx->getObject('modResource',$docID);
$current=(int)$page->getTVValue($tv);
如果(!$page->setTVValue($tv,$current+1)){
$modx->log(xPDO::log_LEVEL_ERROR,“保存电视时出现问题…”);
}
$modx->setPlaceholder('successMessage','.$current');
返回true`

它每次运行时都会增加一个模板变量,并输出一条成功消息(尽管现在我使用该功能来输出一条调试消息)。问题是,它在保存代码段后只会增加TV一次,从而刷新缓存。通常我会通过追加来调用没有缓存的代码段!它的名字,但这似乎不适用于FormIt挂钩。我怎样才能让这个代码工作?现在,我运行整个页面作为不可缓存,但这显然是次优。也许,有一种方法可以以未缓存的方式钩住片段?将代码段中的代码段称为未缓存?

我正在做类似的事情-但要计算页面加载量,我觉得您缺少了最后一点:$current->save()


在保存$tv对象之前,请尝试添加此项

$tv->_processed=false


它是从modElement的属性派生出来的,它扩展了该属性。

不幸的是,它以同样的方式失败-在第一次运行时工作,然后停止;重新保存使我又运行了1次,然后它又停止工作。好吧,如果它没有-setTVvalue自动提交,如果它没有,它也不会在第一次运行时增加,那将是一个奇迹。
<?php
$docID = $modx->resource->get('id');

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