function LayoutBuilderEntityViewDisplay::onDependencyRemoval

Same name in other branches
  1. 9 core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::onDependencyRemoval()
  2. 8.9.x core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::onDependencyRemoval()
  3. 10 core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::onDependencyRemoval()

Overrides EntityDisplayBase::onDependencyRemoval

File

core/modules/layout_builder/src/Entity/LayoutBuilderEntityViewDisplay.php, line 390

Class

LayoutBuilderEntityViewDisplay
Provides an entity view display entity that has a layout.

Namespace

Drupal\layout_builder\Entity

Code

public function onDependencyRemoval(array $dependencies) {
    $changed = parent::onDependencyRemoval($dependencies);
    // Loop through all sections and determine if the removed dependencies are
    // used by their layout plugins.
    foreach ($this->getSections() as $delta => $section) {
        $layout_dependencies = $this->getPluginDependencies($section->getLayout());
        $layout_removed_dependencies = $this->getPluginRemovedDependencies($layout_dependencies, $dependencies);
        if ($layout_removed_dependencies) {
            // @todo Allow the plugins to react to their dependency removal in
            //   https://www.drupal.org/project/drupal/issues/2579743.
            $this->removeSection($delta);
            $changed = TRUE;
        }
        else {
            foreach ($section->getComponents() as $uuid => $component) {
                $plugin_dependencies = $this->getPluginDependencies($component->getPlugin());
                $component_removed_dependencies = $this->getPluginRemovedDependencies($plugin_dependencies, $dependencies);
                if ($component_removed_dependencies) {
                    // @todo Allow the plugins to react to their dependency removal in
                    //   https://www.drupal.org/project/drupal/issues/2579743.
                    $section->removeComponent($uuid);
                    $changed = TRUE;
                }
            }
        }
    }
    return $changed;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.