You are here

public function RendererFactory::create in Entity Print 8

Same name and namespace in other branches
  1. 8.2 src/Renderer/RendererFactory.php \Drupal\entity_print\Renderer\RendererFactory::create()

Parameters

mixed $item: The item we require a renderer for.

string $context: The type, currently supports entities but could change in the future.

Return value

\Drupal\entity_print\Renderer\RendererInterface The constructed renderer.

Overrides RendererFactoryInterface::create

File

src/Renderer/RendererFactory.php, line 19

Class

RendererFactory
The RendererFactory class.

Namespace

Drupal\entity_print\Renderer

Code

public function create($item, $context = 'entity') {

  // If we get an array or something, just look at the first one.
  if (is_array($item)) {
    $item = array_pop($item);
  }
  if ($item instanceof EntityInterface) {

    // Support specific renderers for each entity type.
    $id = $item
      ->getEntityType()
      ->id();
    if ($this->container
      ->has("entity_print.renderer.{$id}")) {
      return $this->container
        ->get("entity_print.renderer.{$id}");
    }

    // Returns the generic service for content/config entities.
    $group = $item
      ->getEntityType()
      ->getGroup();
    if ($this->container
      ->has("entity_print.renderer.{$group}")) {
      return $this->container
        ->get("entity_print.renderer.{$group}");
    }
  }
  throw new PdfEngineException(sprintf('Rendering not yet supported for "%s". Entity Print context "%s"', is_object($item) ? get_class($item) : $item, $context));
}