src/Service/Common/Owner/Render.php line 19

  1. <?php
  2. namespace App\Service\Common\Owner;
  3. use App\Model\Common\GetOwnerInterface;
  4. use Twig\Environment;
  5. class Render
  6. {
  7.     private OwnerProvider $provider;
  8.     private Environment $environment;
  9.     public function __construct(OwnerProvider $providerEnvironment $environment)
  10.     {
  11.         $this->provider $provider;
  12.         $this->environment $environment;
  13.     }
  14.     public function render(GetOwnerInterface $itemstring $target, array $context = []): ?string
  15.     {
  16.         $obj $this->provider->findOwner($item->getOwner());
  17.         if (!$obj) {
  18.             return null;
  19.         }
  20.         $renderParams $obj->getRender();
  21. //        dump($renderParams);
  22.         if (!array_key_exists($target$renderParams)) {
  23.             throw new \Exception(sprintf("invalid render target %s, owner %s"$targetget_class($obj->getEntity())));
  24.         }
  25.         switch ($renderParams[$target]['type']) {
  26.             case 'template':
  27.                 {
  28.                     return $this->environment->render(
  29.                         $renderParams[$target]['name'],
  30.                         [
  31.                             'owner' => $obj->getEntity(),
  32.                             'item' => $item,
  33.                             'context' => $context,
  34.                         ]
  35.                     );
  36.                     break;
  37.                 }
  38.         }
  39.         throw new \Exception(
  40.             sprintf(
  41.                 "can`t render %s, target: %s, owner %s",
  42.                 $renderParams[$target]['type'],
  43.                 $target,
  44.                 get_class($obj->getEntity())
  45.             )
  46.         );
  47.     }
  48. }