You are here

public function PrintEngineExceptionSubscriber::handleException in Entity Print 8.2

Handles print exceptions.

Parameters

\Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent $event: The exception event.

File

src/EventSubscriber/PrintEngineExceptionSubscriber.php, line 53

Class

PrintEngineExceptionSubscriber
Exception event subscriber.

Namespace

Drupal\entity_print\EventSubscriber

Code

public function handleException(GetResponseForExceptionEvent $event) {
  $exception = $event
    ->getException();
  if ($exception instanceof PrintEngineException) {
    \Drupal::messenger()
      ->addError(new FormattableMarkup($exception
      ->getPrettyMessage(), []));
    if ($entity = $this
      ->getEntity()) {
      $event
        ->setResponse(new RedirectResponse($entity
        ->toUrl()
        ->toString()));
    }
    elseif ($view = $this
      ->getView()) {
      $display_id = $this->routeMatch
        ->getParameter('display_id');

      /** @var \Drupal\views\ViewExecutable $executable */
      $executable = $view
        ->getExecutable();
      $executable
        ->setDisplay($display_id);
      $url = $executable
        ->hasUrl() ? $executable
        ->getUrl()
        ->toString() : Url::fromRoute('<front>');
      $event
        ->setResponse(new RedirectResponse($url));
    }
  }
}