FlexCommonTrait.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4. * @package Grav\Common\Flex
  5. *
  6. * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved.
  7. * @license MIT License; see LICENSE file for details.
  8. */
  9. namespace Grav\Common\Flex\Traits;
  10. use Grav\Common\Debugger;
  11. use Grav\Common\Grav;
  12. use Grav\Common\Twig\Twig;
  13. use Twig\Error\LoaderError;
  14. use Twig\Error\SyntaxError;
  15. use Twig\Template;
  16. use Twig\TemplateWrapper;
  17. /**
  18. * Trait FlexCommonTrait
  19. * @package Grav\Common\Flex\Traits
  20. */
  21. trait FlexCommonTrait
  22. {
  23. /**
  24. * @param string $layout
  25. * @return Template|TemplateWrapper
  26. * @throws LoaderError
  27. * @throws SyntaxError
  28. */
  29. protected function getTemplate($layout)
  30. {
  31. $container = $this->getContainer();
  32. /** @var Twig $twig */
  33. $twig = $container['twig'];
  34. try {
  35. return $twig->twig()->resolveTemplate($this->getTemplatePaths($layout));
  36. } catch (LoaderError $e) {
  37. /** @var Debugger $debugger */
  38. $debugger = Grav::instance()['debugger'];
  39. $debugger->addException($e);
  40. return $twig->twig()->resolveTemplate(['flex/404.html.twig']);
  41. }
  42. }
  43. abstract protected function getTemplatePaths(string $layout): array;
  44. abstract protected function getContainer(): Grav;
  45. }