1. Go to this page and download the library: Download cpsit/typo3-cache-bags library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
cpsit / typo3-cache-bags example snippets
use CPSIT\Typo3CacheBags;
$pageId = 72;
$expirationDate = new DateTimeImmutable('tomorrow midnight');
$cacheBag = Typo3CacheBags\Cache\Bag\PageCacheBag::forPage($pageId, $expirationDate);
use CPSIT\Typo3CacheBags;
use TYPO3\CMS\Core;
$cacheBag = Typo3CacheBags\Cache\Bag\PageCacheBag::forPage(72);
$cacheBagRegistry = Core\Utility\GeneralUtility::makeInstance(Typo3CacheBags\Cache\Bag\CacheBagRegistry::class);
$cacheBagRegistry->add($cacheBag);
use CPSIT\Typo3CacheBags;
use TYPO3\CMS\Core;
$cacheBagRegistry = Core\Utility\GeneralUtility::makeInstance(Typo3CacheBags\Cache\Bag\CacheBagRegistry::class);
$expirationDate = $cacheBagRegistry->getExpirationDate(Typo3CacheBags\Enum\CacheScope::Pages);
use CPSIT\Typo3CacheBags;
use TYPO3\CMS\Core;
// Use DI instead, calculator is *NOT* publicly available in the service container!
$cacheExpirationCalculator = Core\Utility\GeneralUtility::makeInstance(Typo3CacheBags\Cache\Expiration\CacheExpirationCalculator::class);
$connectionPool = Core\Utility\GeneralUtility::makeInstance(Core\Database\ConnectionPool::class);
$queryBuilder = $connectionPool->getQueryBuilderForTable('pages');
$queryBuilder->select('*')
->from('pages')
->where(
$queryBuilder->expr()->or(
$queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter(72, Core\Database\Connection::PARAM_INT)),
$queryBuilder->expr()->eq('pid', $queryBuilder->createNamedParameter(72, Core\Database\Connection::PARAM_INT)),
),
)
;
$expirationDate = $cacheExpirationCalculator->forQueryBuilder('pages', $queryBuilder);
$cacheBag = Typo3CacheBags\Cache\Bag\PageCacheBag::forPage(72, $expirationDate);
use CPSIT\Typo3CacheBags;
use Psr\Http\Message;
use TYPO3\CMS\Core;
use TYPO3\CMS\Extbase;
final class BlogController extends Extbase\Mvc\Controller\ActionController
{
public function __construct(
private readonly BlogRepository $blogRepository,
private readonly Typo3CacheBags\Cache\Bag\CacheBagRegistry $cacheBagRegistry,
private readonly Typo3CacheBags\Cache\Expiration\CacheExpirationCalculator $cacheExpirationCalculator,
) {}
public function listAction(): Message\ResponseInterface
{
/** @var Extbase\Persistence\QueryResultInterface<Blog> $blogArticles */
$blogArticles = $this->blogRepository->findAll();
// Create cache bag with reference to the queried table
// and apply the calculated expiration date of all queried blog articles
$cacheBag = Typo3CacheBags\Cache\Bag\PageCacheBag::forTable(
Blog::TABLE_NAME,
$this->cacheExpirationCalculator->forQueryResult(Blog::TABLE_NAME, $blogArticles),
);
// Add cache bag to registry
$this->cacheBagRegistry->add($cacheBag);
$this->view->assign('articles', $blogArticles);
return $this->htmlResponse();
}
public function detailAction(Blog $article): Message\ResponseInterface
{
// Create cache bag with reference to the current article
// and apply the article's endtime as cache expiration date
$cacheBag = Typo3CacheBags\Cache\Bag\PageCacheBag::forRecord(
Blog::TABLE_NAME,
$article->getUid(),
$article->getEndtime(),
);
// Add cache bag to registry
$this->cacheBagRegistry->add($cacheBag);
$this->view->assign('article', $article);
return $this->htmlResponse();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.