You are here

public function ConfigCacheTag::onSave in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/system/src/EventSubscriber/ConfigCacheTag.php \Drupal\system\EventSubscriber\ConfigCacheTag::onSave()

Invalidate cache tags when particular system config objects are saved.

Parameters

\Drupal\Core\Config\ConfigCrudEvent $event: The Event to process.

File

core/modules/system/src/EventSubscriber/ConfigCacheTag.php, line 49

Class

ConfigCacheTag
A subscriber invalidating cache tags when system config objects are saved.

Namespace

Drupal\system\EventSubscriber

Code

public function onSave(ConfigCrudEvent $event) {
  $config_name = $event
    ->getConfig()
    ->getName();

  // Changing the site settings may mean a different route is selected for the
  // front page. Additionally a change to the site name or similar must
  // invalidate the render cache since this could be used anywhere.
  if ($config_name === 'system.site') {
    $this->cacheTagsInvalidator
      ->invalidateTags([
      'route_match',
      'rendered',
    ]);
  }

  // Theme configuration and global theme settings.
  if (in_array($config_name, [
    'system.theme',
    'system.theme.global',
  ], TRUE)) {
    $this->cacheTagsInvalidator
      ->invalidateTags([
      'rendered',
    ]);
  }

  // Theme-specific settings, check if this matches a theme settings
  // configuration object (THEME_NAME.settings), in that case, clear the
  // rendered cache tag.
  if (preg_match('/^([^\\.]*)\\.settings$/', $config_name, $matches)) {
    if ($this->themeHandler
      ->themeExists($matches[1])) {
      $this->cacheTagsInvalidator
        ->invalidateTags([
        'rendered',
      ]);
    }
  }
}