tempStoreFactory = $temp_store_factory; $this->entityTypeManager = $entity_type_manager; } /** * Gets a sample entity for a given entity type and bundle. * * @param string $entity_type_id * The entity type ID. * @param string $bundle_id * The bundle ID. * * @return \Drupal\Core\Entity\EntityInterface * An entity. */ public function get($entity_type_id, $bundle_id) { $tempstore = $this->tempStoreFactory->get('layout_builder.sample_entity'); if ($entity = $tempstore->get("$entity_type_id.$bundle_id")) { return $entity; } $entity_storage = $this->entityTypeManager->getStorage($entity_type_id); if (!$entity_storage instanceof ContentEntityStorageInterface) { throw new \InvalidArgumentException(sprintf('The "%s" entity storage is not supported', $entity_type_id)); } $entity = $entity_storage->createWithSampleValues($bundle_id); // Mark the sample entity as being a preview. $entity->in_preview = TRUE; $tempstore->set("$entity_type_id.$bundle_id", $entity); return $entity; } /** * Deletes a sample entity for a given entity type and bundle. * * @param string $entity_type_id * The entity type ID. * @param string $bundle_id * The bundle ID. * * @return $this */ public function delete($entity_type_id, $bundle_id) { $tempstore = $this->tempStoreFactory->get('layout_builder.sample_entity'); $tempstore->delete("$entity_type_id.$bundle_id"); return $this; } }