RendererBase.php in Entity Print 8.2
File
src/Renderer/RendererBase.php
View source
<?php
namespace Drupal\entity_print\Renderer;
use Drupal\Core\Entity\EntityHandlerInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Render\RenderContext;
use Drupal\entity_print\Asset\AssetRendererInterface;
use Drupal\entity_print\Event\PrintEvents;
use Drupal\entity_print\Event\PrintHtmlAlterEvent;
use Drupal\entity_print\FilenameGeneratorInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Drupal\Core\Render\RendererInterface as CoreRendererInterface;
abstract class RendererBase implements RendererInterface, EntityHandlerInterface {
protected $renderer;
protected $assetRenderer;
protected $filenameGenerator;
protected $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;
}
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'));
}
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);
});
$this->dispatcher
->dispatch(PrintEvents::POST_RENDER, new PrintHtmlAlterEvent($html, $entities));
return $html;
}
public function getFilename(array $entities) {
return $this->filenameGenerator
->generateFilename($entities);
}
}