public function ParagraphBlocksEntityManager::getEntity in Paragraph blocks 8
Same name and namespace in other branches
- 8.2 src/ParagraphBlocksEntityManager.php \Drupal\paragraph_blocks\ParagraphBlocksEntityManager::getEntity()
 - 3.x src/ParagraphBlocksEntityManager.php \Drupal\paragraph_blocks\ParagraphBlocksEntityManager::getEntity()
 
Return the entity of the path.
@todo: This implements something similar to menu_get_object() which was likely removed intentionally, so is this a bad idea?
Parameters
string $path: (optional) The path to lookup, defaults to the current path.
Return value
\Drupal\Core\Entity\EntityInterface|null The entity of the current path, or null if none.
See also
entity_css_get_entity()
1 call to ParagraphBlocksEntityManager::getEntity()
- ParagraphBlocksEntityManager::getRefererEntity in src/
ParagraphBlocksEntityManager.php  - Return the entity of the referer, useful when called via AJAX.
 
File
- src/
ParagraphBlocksEntityManager.php, line 82  
Class
- ParagraphBlocksEntityManager
 - Class HcpCoreManager.
 
Namespace
Drupal\paragraph_blocksCode
public function getEntity($path = NULL) {
  // Get the current path if none is specified.
  if (!$path) {
    $path = parse_url(\Drupal::requestStack()
      ->getCurrentRequest()
      ->getRequestUri(), PHP_URL_PATH);
  }
  $base_path = base_path();
  if (empty($path) || $path == $base_path || $path == '<front>') {
    $path = \Drupal::config('system.site')
      ->get('page.front');
  }
  // Convert the specified path to an internal path.
  $source_path = \Drupal::service('path.alias_manager')
    ->getPathByAlias($path);
  $source_path = preg_replace(":^{$base_path}:", '', $source_path);
  // Check if this is the entity path.
  // @todo: this makes assumption that are possibly not valid. For example, is
  // the entity path always "/entity_type_id/entity_id"?
  $parts = explode('/', trim($source_path, '/'));
  if (count($parts) >= 2) {
    list($entity_type_id, $entity_id) = $parts;
    $entity_type_id = str_replace('-', '_', $entity_type_id);
    // Check that the path is for an entity.
    $entity_type_manager = \Drupal::entityTypeManager();
    /** @var \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager */
    $entity_types = $entity_type_manager
      ->getDefinitions();
    if (is_numeric($entity_id) && isset($entity_types[$entity_type_id])) {
      /** @var \Drupal\Core\Entity\EntityStorageInterface $entity_storage */
      $entity_storage = $entity_type_manager
        ->getStorage($entity_type_id);
      if ($entity_storage) {
        // Load and return the entity.
        return $entity_storage
          ->load($entity_id);
      }
    }
  }
  return NULL;
}