private function DefaultsSectionStorage::extractEntityFromRoute in Drupal 9
Same name and namespace in other branches
- 8 core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php \Drupal\layout_builder\Plugin\SectionStorage\DefaultsSectionStorage::extractEntityFromRoute()
Extracts an entity from the route values.
Parameters
mixed $value: The raw value from the route.
array $defaults: The route defaults array.
Return value
\Drupal\Core\Entity\EntityInterface|null The entity for the route, or NULL if none exist.
See also
\Drupal\layout_builder\SectionStorageInterface::deriveContextsFromRoute()
\Drupal\Core\ParamConverter\ParamConverterInterface::convert()
1 call to DefaultsSectionStorage::extractEntityFromRoute()
- DefaultsSectionStorage::deriveContextsFromRoute in core/
modules/ layout_builder/ src/ Plugin/ SectionStorage/ DefaultsSectionStorage.php - Derives the available plugin contexts from route values.
File
- core/
modules/ layout_builder/ src/ Plugin/ SectionStorage/ DefaultsSectionStorage.php, line 256
Class
- DefaultsSectionStorage
- Defines the 'defaults' section storage type.
Namespace
Drupal\layout_builder\Plugin\SectionStorageCode
private function extractEntityFromRoute($value, array $defaults) {
// 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 (is_string($value) && strpos($value, '.') !== FALSE) {
list($entity_type_id, $bundle, $view_mode) = explode('.', $value, 3);
}
elseif (!empty($defaults['entity_type_id']) && !empty($defaults['bundle']) && !empty($defaults['view_mode_name'])) {
$entity_type_id = $defaults['entity_type_id'];
$bundle = $defaults['bundle'];
$view_mode = $defaults['view_mode_name'];
$value = "{$entity_type_id}.{$bundle}.{$view_mode}";
}
else {
return NULL;
}
$storage = $this->entityTypeManager
->getStorage('entity_view_display');
// If the display does not exist, create a new one.
if (!($display = $storage
->load($value))) {
$display = $storage
->create([
'targetEntityType' => $entity_type_id,
'bundle' => $bundle,
'mode' => $view_mode,
'status' => TRUE,
]);
}
return $display;
}