class RequestPreparer in Tome 8
Utility class to prepare Drupal for new requests.
Hopefully, in the future, this will not be necessary, which is why it isn't used by the static generator directly. This is a hotfix for a core problem.
Hierarchy
- class \Drupal\tome_static\RequestPreparer
Expanded class hierarchy of RequestPreparer
See also
\Drupal\tome_static\StaticGeneratorInterface::requestPath
3 files declare their use of RequestPreparer
- StaticExportPathCommand.php in modules/
tome_static/ src/ Commands/ StaticExportPathCommand.php - StaticGeneratorForm.php in modules/
tome_static/ src/ Form/ StaticGeneratorForm.php - TomeStaticQueueWorker.php in modules/
tome_static/ modules/ tome_static_cron/ src/ Plugin/ QueueWorker/ TomeStaticQueueWorker.php
1 string reference to 'RequestPreparer'
- tome_static.services.yml in modules/
tome_static/ tome_static.services.yml - modules/tome_static/tome_static.services.yml
1 service uses RequestPreparer
- tome_static.request_preparer in modules/
tome_static/ tome_static.services.yml - Drupal\tome_static\RequestPreparer
File
- modules/
tome_static/ src/ RequestPreparer.php, line 22
Namespace
Drupal\tome_staticView source
class RequestPreparer {
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* The decorated context repository.
*
* @var \Drupal\tome_static\LazyResettableContextRepository
*/
protected $contextRepository;
/**
* The decorated path matcher.
*
* @var \Drupal\tome_static\ResettablePathMatcher
*/
protected $pathMatcher;
/**
* The menu active trail cache collector.
*
* @var \Drupal\Core\Menu\MenuActiveTrailInterface
*/
protected $menuActiveTrail;
/**
* The event dispatcher.
*
* @var \Symfony\Component\EventDispatcher\EventDispatcherInterface
*/
protected $eventDispatcher;
/**
* The language manager.
*
* @var \Drupal\Core\Language\LanguageManagerInterface
*/
protected $languageManager;
/**
* Constructs a RequestPreparer object.
*
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
* @param \Drupal\tome_static\LazyResettableContextRepository $context_repository
* The decorated context repository.
* @param \Drupal\tome_static\ResettablePathMatcher $path_matcher
* The decorated path matcher.
* @param \Drupal\Core\Menu\MenuActiveTrailInterface $menu_active_trail
* The menu active trail cache collector.
* @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
* The event dispatcher.
* @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
* The language manager.
*/
public function __construct(EntityTypeManagerInterface $entity_type_manager, LazyResettableContextRepository $context_repository, ResettablePathMatcher $path_matcher, MenuActiveTrailInterface $menu_active_trail, EventDispatcherInterface $event_dispatcher, LanguageManagerInterface $language_manager) {
$this->entityTypeManager = $entity_type_manager;
$this->contextRepository = $context_repository;
$this->pathMatcher = $path_matcher;
$this->menuActiveTrail = $menu_active_trail;
$this->eventDispatcher = $event_dispatcher;
$this->languageManager = $language_manager;
}
/**
* Prepares Drupal for a new request.
*/
public function prepareForRequest() {
// Some access control handlers, like block's, determine entity access
// based on the route (via conditions, in this case).
foreach ($this->entityTypeManager
->getDefinitions() as $definition) {
$this->entityTypeManager
->getAccessControlHandler($definition
->id())
->resetCache();
}
// Some contrib modules, like metatag, statically cache route data.
drupal_static_reset();
// The context repository caches all context values in memory.
$this->contextRepository
->resetCache();
// The front page route is statically cached.
$this->pathMatcher
->resetCache();
// Persist cached active trail information cache as if the request ended.
if ($this->menuActiveTrail instanceof DestructableInterface) {
$this->menuActiveTrail
->destruct();
}
// Reset active trail cache.
if ($this->menuActiveTrail instanceof CacheCollectorInterface) {
$this->menuActiveTrail
->reset();
}
// Reset the language manager.
$this->languageManager
->reset();
// Allow module-specific code to prepare as well.
$this->eventDispatcher
->dispatch(TomeStaticEvents::REQUEST_PREPARE);
// Reset unique HTML IDs.
Html::resetSeenIds();
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
RequestPreparer:: |
protected | property | The decorated context repository. | |
RequestPreparer:: |
protected | property | The entity type manager. | |
RequestPreparer:: |
protected | property | The event dispatcher. | |
RequestPreparer:: |
protected | property | The language manager. | |
RequestPreparer:: |
protected | property | The menu active trail cache collector. | |
RequestPreparer:: |
protected | property | The decorated path matcher. | |
RequestPreparer:: |
public | function | Prepares Drupal for a new request. | |
RequestPreparer:: |
public | function | Constructs a RequestPreparer object. |