Commit 473c0ae2 authored by Saurabh Vijayvargiya's avatar Saurabh Vijayvargiya Committed by dmitriy.trt
Browse files

Issue #3304958 by sorabh.v6: Invalidate the cache when settings are changed

parent bafffae2
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -23,6 +23,13 @@ class SettingsForm extends ConfigFormBase {
   */
  protected $entityTypeManager;

  /**
   * The cache tags invalidator to be used.
   *
   * @var \Drupal\Core\Cache\CacheTagsInvalidatorInterface $cacheTagsInvalidator
   */
  protected $cacheTagsInvalidator;

  /**
   * {@inheritdoc}
   */
@@ -30,6 +37,7 @@ class SettingsForm extends ConfigFormBase {
    $instance = parent::create($container);

    $instance->entityTypeManager = $container->get('entity_type.manager');
    $instance->cacheTagsInvalidator = $container->get('cache_tags.invalidator');

    return $instance;
  }
@@ -99,9 +107,21 @@ class SettingsForm extends ConfigFormBase {
    $trailless_menus = array_filter($trailless_menus);
    sort($trailless_menus);
    $trailless_menu_map = array_fill_keys($trailless_menus, TRUE);

    $existing_trailless_menu = $config->get(static::TRAILLESS_MENUS_SETTING);
    $config->set(static::TRAILLESS_MENUS_SETTING, $trailless_menu_map);
    $config->save();

    if ($existing_trailless_menu !== $trailless_menu_map) {
      $diff_array = array_diff_key($existing_trailless_menu, $trailless_menu_map) +
        array_diff_key($trailless_menu_map, $existing_trailless_menu);
      $tags = [];
      foreach ($diff_array as $item => $value) {
        $tags[] = 'config:system.menu.' . $item;
      }
      $this->cacheTagsInvalidator->invalidateTags($tags);
    }

    parent::submitForm($form, $form_state);
  }