Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. LayoutBuilderEntityViewDisplay.php

function LayoutBuilderEntityViewDisplay::onDependencyRemoval

Overrides EntityDisplayBase::onDependencyRemoval

File

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

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;
}
RSS feed
Powered by Drupal