You are here

class ViewRenderer in Entity Print 8.2

Providers a renderer for Views.

Hierarchy

Expanded class hierarchy of ViewRenderer

1 file declares its use of ViewRenderer
entity_print_views.module in modules/entity_print_views/entity_print_views.module
Entity Print Views module file.

File

modules/entity_print_views/src/Renderer/ViewRenderer.php, line 14

Namespace

Drupal\entity_print_views\Renderer
View source
class ViewRenderer extends RendererBase implements TrustedCallbackInterface {

  /**
   * {@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 render(array $views) {
    return array_map([
      $this,
      'renderSingle',
    ], $views);
  }

  /**
   * Render a single entity.
   *
   * @param \Drupal\Core\Entity\EntityInterface $view
   *   The entity we're rendering.
   *
   * @return array
   *   A render array.
   */
  protected function renderSingle(EntityInterface $view) {

    /** @var \Drupal\views\Entity\View $view */
    $executable = $view
      ->getExecutable();
    $render = $executable
      ->render() ?: [];

    // We must remove ourselves from all areas otherwise it will cause an
    // infinite loop when rendering.
    foreach ([
      'header',
      'footer',
      'empty',
    ] as $area_type) {
      $handlers =& $executable->display_handler
        ->getHandlers($area_type);
      unset($handlers['area_entity_print_views']);
    }
    $render['#pre_render'][] = [
      static::class,
      'preRender',
    ];
    return $render;
  }

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

      /** @var \Drupal\views\ViewEntityInterface $view */
      return $view
        ->getExecutable()
        ->getTitle();
    });
  }

  /**
   * Pre render callback for the view.
   */
  public static function preRender(array $element) {

    // Remove the exposed filters, we don't every want them on the PDF.
    $element['#exposed'] = [];
    return $element;
  }

  /**
   * {@inheritdoc}
   */
  public static function trustedCallbacks() {
    return [
      'preRender',
    ];
  }

}

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::generateHtml public function Generates the HTML from the renderable array of entities. Overrides RendererInterface::generateHtml
RendererBase::__construct public function RendererBase constructor. 1
TrustedCallbackInterface::THROW_EXCEPTION constant Untrusted callbacks throw exceptions.
TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION constant Untrusted callbacks trigger silenced E_USER_DEPRECATION errors.
TrustedCallbackInterface::TRIGGER_WARNING constant Untrusted callbacks trigger E_USER_WARNING errors.
ViewRenderer::createInstance public static function Instantiates a new instance of this entity handler. Overrides RendererBase::createInstance
ViewRenderer::getFilename public function Get the filename for the entity we're printing *without* the extension. Overrides RendererBase::getFilename
ViewRenderer::preRender public static function Pre render callback for the view.
ViewRenderer::render public function Gets the renderable for this entity. Overrides RendererInterface::render
ViewRenderer::renderSingle protected function Render a single entity.
ViewRenderer::trustedCallbacks public static function Lists the trusted callbacks provided by the implementing class. Overrides TrustedCallbackInterface::trustedCallbacks