function LayoutBuilderRoutesTrait::buildLayoutRoutes

Same name and namespace in other branches
  1. 9 core/modules/layout_builder/src/Routing/LayoutBuilderRoutesTrait.php \Drupal\layout_builder\Routing\LayoutBuilderRoutesTrait::buildLayoutRoutes()
  2. 8.9.x core/modules/layout_builder/src/Routing/LayoutBuilderRoutesTrait.php \Drupal\layout_builder\Routing\LayoutBuilderRoutesTrait::buildLayoutRoutes()
  3. 10 core/modules/layout_builder/src/Routing/LayoutBuilderRoutesTrait.php \Drupal\layout_builder\Routing\LayoutBuilderRoutesTrait::buildLayoutRoutes()

Builds the layout routes for the given values.

Parameters

\Symfony\Component\Routing\RouteCollection $collection: The route collection.

\Drupal\layout_builder\SectionStorage\SectionStorageDefinition $definition: The definition of the section storage.

string $path: The path patten for the routes.

array $defaults: (optional) An array of default parameter values.

array $requirements: (optional) An array of requirements for parameters.

array $options: (optional) An array of options.

string $route_name_prefix: (optional) The prefix to use for the route name.

string $entity_type_id: (optional) The entity type ID, if available.

4 calls to LayoutBuilderRoutesTrait::buildLayoutRoutes()
DefaultsSectionStorage::buildRoutes in core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php
Provides the routes needed for Layout Builder UI.
NavigationSectionStorage::buildRoutes in core/modules/navigation/src/Plugin/SectionStorage/NavigationSectionStorage.php
Provides the routes needed for Layout Builder UI.
OverridesSectionStorage::buildRoutes in core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php
Provides the routes needed for Layout Builder UI.
SimpleConfigSectionStorage::buildRoutes in core/modules/layout_builder/tests/modules/layout_builder_test/src/Plugin/SectionStorage/SimpleConfigSectionStorage.php
Provides the routes needed for Layout Builder UI.

File

core/modules/layout_builder/src/Routing/LayoutBuilderRoutesTrait.php, line 37

Class

LayoutBuilderRoutesTrait
Provides a trait for building routes for a Layout Builder UI.

Namespace

Drupal\layout_builder\Routing

Code

protected function buildLayoutRoutes(RouteCollection $collection, SectionStorageDefinition $definition, $path, array $defaults = [], array $requirements = [], array $options = [], $route_name_prefix = '', $entity_type_id = '') {
    $type = $definition->id();
    $defaults['section_storage_type'] = $type;
    // Provide an empty value to allow the section storage to be upcast.
    $defaults['section_storage'] = '';
    // Trigger the layout builder access check.
    $requirements['_layout_builder_access'] = 'view';
    // Trigger the layout builder RouteEnhancer.
    $options['_layout_builder'] = TRUE;
    // Trigger the layout builder param converter.
    $parameters['section_storage']['layout_builder_tempstore'] = TRUE;
    // Merge the passed in options in after Layout Builder's parameters.
    $options = NestedArray::mergeDeep([
        'parameters' => $parameters,
    ], $options);
    if ($route_name_prefix) {
        $route_name_prefix = "layout_builder.{$type}.{$route_name_prefix}";
    }
    else {
        $route_name_prefix = "layout_builder.{$type}";
    }
    $main_defaults = $defaults;
    $main_options = $options;
    if ($entity_type_id) {
        $main_defaults['_entity_form'] = "{$entity_type_id}.layout_builder";
    }
    else {
        $main_defaults['_controller'] = '\\Drupal\\layout_builder\\Controller\\LayoutBuilderController::layout';
    }
    $main_defaults['_title_callback'] = '\\Drupal\\layout_builder\\Controller\\LayoutBuilderController::title';
    $route = (new Route($path))->setDefaults($main_defaults)
        ->setRequirements($requirements)
        ->setOptions($main_options);
    $collection->add("{$route_name_prefix}.view", $route);
    $discard_changes_defaults = $defaults;
    $discard_changes_defaults['_form'] = '\\Drupal\\layout_builder\\Form\\DiscardLayoutChangesForm';
    $route = (new Route("{$path}/discard-changes"))->setDefaults($discard_changes_defaults)
        ->setRequirements($requirements)
        ->setOptions($options);
    $collection->add("{$route_name_prefix}.discard_changes", $route);
    if (is_subclass_of($definition->getClass(), OverridesSectionStorageInterface::class)) {
        $revert_defaults = $defaults;
        $revert_defaults['_form'] = '\\Drupal\\layout_builder\\Form\\RevertOverridesForm';
        $route = (new Route("{$path}/revert"))->setDefaults($revert_defaults)
            ->setRequirements($requirements)
            ->setOptions($options);
        $collection->add("{$route_name_prefix}.revert", $route);
    }
    elseif (is_subclass_of($definition->getClass(), DefaultsSectionStorageInterface::class)) {
        $disable_defaults = $defaults;
        $disable_defaults['_form'] = '\\Drupal\\layout_builder\\Form\\LayoutBuilderDisableForm';
        $disable_options = $options;
        unset($disable_options['_admin_route'], $disable_options['_layout_builder']);
        $route = (new Route("{$path}/disable"))->setDefaults($disable_defaults)
            ->setRequirements($requirements)
            ->setOptions($disable_options);
        $collection->add("{$route_name_prefix}.disable", $route);
    }
}

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