SectionStorageInterface.php

Same filename in other branches
  1. 9 core/modules/layout_builder/src/SectionStorageInterface.php
  2. 10 core/modules/layout_builder/src/SectionStorageInterface.php
  3. 11.x core/modules/layout_builder/src/SectionStorageInterface.php

Namespace

Drupal\layout_builder

File

core/modules/layout_builder/src/SectionStorageInterface.php

View source
<?php

namespace Drupal\layout_builder;

use Drupal\Component\Plugin\PluginInspectionInterface;
use Drupal\Core\Access\AccessibleInterface;
use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
use Drupal\Core\Plugin\ContextAwarePluginInterface;
use Drupal\Core\Session\AccountInterface;
use Symfony\Component\Routing\RouteCollection;

/**
 * Defines an interface for Section Storage type plugins.
 */
interface SectionStorageInterface extends SectionListInterface, PluginInspectionInterface, ContextAwarePluginInterface, AccessibleInterface {
    
    /**
     * Returns an identifier for this storage.
     *
     * @return string
     *   The unique identifier for this storage.
     */
    public function getStorageId();
    
    /**
     * Returns the type of this storage.
     *
     * Used in conjunction with the storage ID.
     *
     * @return string
     *   The type of storage.
     */
    public function getStorageType();
    
    /**
     * Derives the section list from the storage ID.
     *
     * @param string $id
     *   The storage ID, see ::getStorageId().
     *
     * @return \Drupal\layout_builder\SectionListInterface
     *   The section list.
     *
     * @throws \InvalidArgumentException
     *   Thrown if the ID is invalid.
     *
     * @internal
     *   This should only be called during section storage instantiation.
     *
     * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0. The
     *   section list should be derived from context. See
     *   https://www.drupal.org/node/3016262.
     */
    public function getSectionListFromId($id);
    
    /**
     * Provides the routes needed for Layout Builder UI.
     *
     * Allows the plugin to add or alter routes during the route building process.
     * \Drupal\layout_builder\Routing\LayoutBuilderRoutesTrait is provided for the
     * typical use case of building a standard Layout Builder UI.
     *
     * @param \Symfony\Component\Routing\RouteCollection $collection
     *   The route collection.
     *
     * @see \Drupal\Core\Routing\RoutingEvents::ALTER
     */
    public function buildRoutes(RouteCollection $collection);
    
    /**
     * Gets the URL used when redirecting away from the Layout Builder UI.
     *
     * @return \Drupal\Core\Url
     *   The URL object.
     */
    public function getRedirectUrl();
    
    /**
     * Gets the URL used to display the Layout Builder UI.
     *
     * @param string $rel
     *   (optional) The link relationship type, for example: 'view' or 'disable'.
     *   Defaults to 'view'.
     *
     * @return \Drupal\Core\Url
     *   The URL object.
     */
    public function getLayoutBuilderUrl($rel = 'view');
    
    /**
     * Configures the plugin based on route values.
     *
     * @param mixed $value
     *   The raw value.
     * @param mixed $definition
     *   The parameter definition provided in the route options.
     * @param string $name
     *   The name of the parameter.
     * @param array $defaults
     *   The route defaults array.
     *
     * @return string|null
     *   The section storage ID if it could be extracted, NULL otherwise.
     *
     * @internal
     *   This should only be called during section storage instantiation.
     *
     * @deprecated in drupal:8.7.0 and is removed from drupal:9.0.0.
     *   \Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute()
     *   should be used instead. See https://www.drupal.org/node/3016262.
     */
    public function extractIdFromRoute($value, $definition, $name, array $defaults);
    
    /**
     * Derives the available plugin contexts from route values.
     *
     * This should only be called during section storage instantiation,
     * specifically for use by the routing system. For all non-routing usages, use
     * \Drupal\Component\Plugin\ContextAwarePluginInterface::getContextValue().
     *
     * @param mixed $value
     *   The raw value.
     * @param mixed $definition
     *   The parameter definition provided in the route options.
     * @param string $name
     *   The name of the parameter.
     * @param array $defaults
     *   The route defaults array.
     *
     * @return \Drupal\Core\Plugin\Context\ContextInterface[]
     *   The available plugin contexts.
     *
     * @see \Drupal\Core\ParamConverter\ParamConverterInterface::convert()
     */
    public function deriveContextsFromRoute($value, $definition, $name, array $defaults);
    
    /**
     * Gets contexts for use during preview.
     *
     * When not in preview, ::getContexts() will be used.
     *
     * @return \Drupal\Core\Plugin\Context\ContextInterface[]
     *   The plugin contexts suitable for previewing.
     */
    public function getContextsDuringPreview();
    
    /**
     * Gets the label for the object using the sections.
     *
     * @return string
     *   The label, or NULL if there is no label defined.
     */
    public function label();
    
    /**
     * Saves the sections.
     *
     * @return int
     *   SAVED_NEW or SAVED_UPDATED is returned depending on the operation
     *   performed.
     */
    public function save();
    
    /**
     * Determines if this section storage is applicable for the current contexts.
     *
     * @param \Drupal\Core\Cache\RefinableCacheableDependencyInterface $cacheability
     *   Refinable cacheability object, typically provided by the section storage
     *   manager. When implementing this method, populate $cacheability with any
     *   information that affects whether this storage is applicable.
     *
     * @return bool
     *   TRUE if this section storage is applicable, FALSE otherwise.
     *
     * @internal
     *   This method is intended to be called by
     *   \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface::findByContext().
     *
     * @see \Drupal\Core\Cache\RefinableCacheableDependencyInterface
     */
    public function isApplicable(RefinableCacheableDependencyInterface $cacheability);
    
    /**
     * Overrides \Drupal\Component\Plugin\PluginInspectionInterface::getPluginDefinition().
     *
     * @return \Drupal\layout_builder\SectionStorage\SectionStorageDefinition
     *   The section storage definition.
     */
    public function getPluginDefinition();
    
    /**
     * Overrides \Drupal\Core\Access\AccessibleInterface::access().
     *
     * @ingroup layout_builder_access
     */
    public function access($operation, AccountInterface $account = NULL, $return_as_object = FALSE);

}

Interfaces

Title Deprecated Summary
SectionStorageInterface Defines an interface for Section Storage type plugins.

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