Typo3 9 - 清除页面 ID 的缓存
Typo3 9 - clear cache for a page id
对于 Typo3 8,以下方法有效:
$tce = GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\DataHandler::class);
$tce->clear_cacheCmd($pid);
在 Typo3 9 中使用它会导致此错误:
Call to a member function getTSConfig() on null
in E:\wwwroot_T9LTS\typo3\sysext\core\Classes\DataHandling\DataHandler.php line 8971
在 Typo3 9 中清除页面 ID 缓存的最佳方法是什么?
更新
使用 CacheManager 让它工作:
$cacheManager = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Cache\CacheManager::class);
$cacheManager->flushCachesInGroupByTags('pages', [ 'pageId_'.$pid ]);
您必须通过调用 start() 方法来初始化 class:
$tce = GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\DataHandler::class);
$tce->start([], []);
$tce->clear_cacheCmd($pid);
详情见documentation。
您可能 运行 在未登录后端时使用 DataHandler 清除缓存时遇到问题。在 Extbase 上下文中,您可以使用:
$cacheManager = $this->objectManager->get(\TYPO3\CMS\Extbase\Service\CacheService::class);
$cacheManager->clearPageCache([1,2,3]);
对于 Typo3 8,以下方法有效:
$tce = GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\DataHandler::class);
$tce->clear_cacheCmd($pid);
在 Typo3 9 中使用它会导致此错误:
Call to a member function getTSConfig() on null
in E:\wwwroot_T9LTS\typo3\sysext\core\Classes\DataHandling\DataHandler.php line 8971
在 Typo3 9 中清除页面 ID 缓存的最佳方法是什么?
更新
使用 CacheManager 让它工作:
$cacheManager = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Cache\CacheManager::class);
$cacheManager->flushCachesInGroupByTags('pages', [ 'pageId_'.$pid ]);
您必须通过调用 start() 方法来初始化 class:
$tce = GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\DataHandler::class);
$tce->start([], []);
$tce->clear_cacheCmd($pid);
详情见documentation。
您可能 运行 在未登录后端时使用 DataHandler 清除缓存时遇到问题。在 Extbase 上下文中,您可以使用:
$cacheManager = $this->objectManager->get(\TYPO3\CMS\Extbase\Service\CacheService::class);
$cacheManager->clearPageCache([1,2,3]);