次のスニペット コードを 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 を 1 回だけインクリメントするため、キャッシュが更新されることです。通常、キャッシュなしでスニペットを呼び出すには、! を追加します。その名前に似ていますが、それは FormIt フックでは機能しないようです。このコードを機能させるにはどうすればよいですか? 現在、ページ全体をキャッシュ不可として実行していますが、それは明らかに最適ではありません。おそらく、キャッシュされていない方法でスニペットをフックする方法はありますか? キャッシュされていないスニペット内からスニペットを呼び出しますか?