You are here

public function DefaultsSectionStorage::extractIdFromRoute in Drupal 8

Configures the plugin based on route values.

@internal This should only be called during section storage instantiation.

Parameters

mixed $value: The raw value.

mixed $definition: The parameter definition provided in the route options.

string $name: The name of the parameter.

array $defaults: The route defaults array.

Return value

string|null The section storage ID if it could be extracted, NULL otherwise.

Overrides SectionStorageInterface::extractIdFromRoute

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.

File

core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php, line 219

Class

DefaultsSectionStorage
Defines the 'defaults' section storage type.

Namespace

Drupal\layout_builder\Plugin\SectionStorage

Code

public function extractIdFromRoute($value, $definition, $name, array $defaults) {
  @trigger_error('\\Drupal\\layout_builder\\SectionStorageInterface::extractIdFromRoute() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. \\Drupal\\layout_builder\\SectionStorageInterface::deriveContextsFromRoute() should be used instead. See https://www.drupal.org/node/3016262.', E_USER_DEPRECATED);
  if (is_string($value) && strpos($value, '.') !== FALSE) {
    return $value;
  }

  // If a bundle is not provided but a value corresponding to the bundle key
  // is, use that for the bundle value.
  if (empty($defaults['bundle']) && isset($defaults['bundle_key']) && !empty($defaults[$defaults['bundle_key']])) {
    $defaults['bundle'] = $defaults[$defaults['bundle_key']];
  }
  if (!empty($defaults['entity_type_id']) && !empty($defaults['bundle']) && !empty($defaults['view_mode_name'])) {
    return $defaults['entity_type_id'] . '.' . $defaults['bundle'] . '.' . $defaults['view_mode_name'];
  }
}