You are here

abstract class RendererBase in Entity Print 8.2

Same name and namespace in other branches
  1. 8 src/Renderer/RendererBase.php \Drupal\entity_print\Renderer\RendererBase

The RendererBase class.

Hierarchy

Expanded class hierarchy of RendererBase

1 file declares its use of RendererBase
ViewRenderer.php in modules/entity_print_views/src/Renderer/ViewRenderer.php

File

src/Renderer/RendererBase.php, line 19

Namespace

Drupal\entity_print\Renderer
View source
abstract class RendererBase implements RendererInterface, EntityHandlerInterface {

  /**
   * The renderer for renderable arrays.
   *
   * @var \Drupal\Core\Render\RendererInterface
   */
  protected $renderer;

  /**
   * The asset renderer.
   *
   * @var \Drupal\entity_print\Asset\AssetRendererInterface
   */
  protected $assetRenderer;

  /**
   * Generate filename's for a printed document.
   *
   * @var \Drupal\entity_print\FilenameGeneratorInterface
   */
  protected $filenameGenerator;

  /**
   * The event dispatcher.
   *
   * @var \Symfony\Component\EventDispatcher\EventDispatcherInterface
   */
  protected $dispatcher;

  /**
   * RendererBase constructor.
   *
   * @param \Drupal\Core\Render\RendererInterface $renderer
   *   Cores renderer.
   * @param \Drupal\entity_print\Asset\AssetRendererInterface $asset_renderer
   *   The asset renderer.
   * @param \Drupal\entity_print\FilenameGeneratorInterface $filename_generator
   *   Filename generator.
   * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
   *   The event dispatcher.
   */
  public function __construct(CoreRendererInterface $renderer, AssetRendererInterface $asset_renderer, FilenameGeneratorInterface $filename_generator, EventDispatcherInterface $event_dispatcher) {
    $this->renderer = $renderer;
    $this->assetRenderer = $asset_renderer;
    $this->filenameGenerator = $filename_generator;
    $this->dispatcher = $event_dispatcher;
  }

  /**
   * {@inheritdoc}
   */
  public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
    return new static($container
      ->get('renderer'), $container
      ->get('entity_print.asset_renderer'), $container
      ->get('entity_print.filename_generator'), $container
      ->get('event_dispatcher'));
  }

  /**
   * {@inheritdoc}
   */
  public function generateHtml(array $entities, array $render, $use_default_css, $optimize_css) {
    $rendered_css = $this->assetRenderer
      ->render($entities, $use_default_css, $optimize_css);
    $render['#entity_print_css'] = $this->renderer
      ->executeInRenderContext(new RenderContext(), function () use (&$rendered_css) {
      return $this->renderer
        ->render($rendered_css);
    });
    $html = (string) $this->renderer
      ->executeInRenderContext(new RenderContext(), function () use (&$render) {
      return $this->renderer
        ->render($render);
    });

    // Allow other modules to alter the generated HTML.
    $this->dispatcher
      ->dispatch(PrintEvents::POST_RENDER, new PrintHtmlAlterEvent($html, $entities));
    return $html;
  }

  /**
   * {@inheritdoc}
   */
  public function getFilename(array $entities) {
    return $this->filenameGenerator
      ->generateFilename($entities);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
RendererBase::$assetRenderer protected property The asset renderer.
RendererBase::$dispatcher protected property The event dispatcher.
RendererBase::$filenameGenerator protected property Generate filename's for a printed document.
RendererBase::$renderer protected property The renderer for renderable arrays.
RendererBase::createInstance public static function Instantiates a new instance of this entity handler. Overrides EntityHandlerInterface::createInstance 2
RendererBase::generateHtml public function Generates the HTML from the renderable array of entities. Overrides RendererInterface::generateHtml
RendererBase::getFilename public function Get the filename for the entity we're printing *without* the extension. Overrides RendererInterface::getFilename 1
RendererBase::__construct public function RendererBase constructor. 1
RendererInterface::render public function Gets the renderable for this entity. 2