src/Twig/AppExtension.php line 58

Open in your IDE?
  1. <?php
  2. namespace App\Twig;
  3. use App\Service\TranslationService;
  4. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  5. use Twig\Extension\AbstractExtension;
  6. use Twig\TwigFilter;
  7. /**
  8.  * Class AppExtension
  9.  * @package App\Twig
  10.  */
  11. class AppExtension extends AbstractExtension
  12. {
  13.     /**
  14.      * @var TranslationService
  15.      */
  16.     private $translationService;
  17.     /**
  18.      * @var SessionInterface
  19.      */
  20.     private $session;
  21.     /**
  22.      * AppExtension constructor.
  23.      * @param TranslationService $translationService
  24.      * @param SessionInterface $session
  25.      */
  26.     public function __construct(TranslationService $translationServiceSessionInterface $session)
  27.     {
  28.         $this->translationService $translationService;
  29.         $this->session $session;
  30.     }
  31.     /**
  32.      * @return TwigFilter[]
  33.      */
  34.     public function getFilters()
  35.     {
  36.         return [
  37.             new TwigFilter('transedit', [$this'getTranslation']),
  38.             new TwigFilter('transonly', [$this'getTranslationOnly']),
  39.             new TwigFilter('json_decode', [$this'jsonDecode'])
  40.         ];
  41.     }
  42.     /**
  43.      * @param string $name
  44.      * @return string
  45.      */
  46.     public function getTranslation(string $name)
  47.     {
  48.         // load language from user
  49.         $translation $this->translationService->getTranslation($name);
  50.         if ($this->session->get("editmode"false)) {
  51.             return "<span class=\"transedit\" data-name=\"".$name."\" data-translation=\"".$translation."\">".$translation."</span>";
  52.         } else {
  53.             return $translation;
  54.         }
  55.     }
  56.     /**
  57.      * @param string $name
  58.      * @return string
  59.      */
  60.     public function getTranslationOnly(string $name)
  61.     {
  62.         // load language from user
  63.         return $this->translationService->getTranslation($name);
  64.     }
  65.     /**
  66.      * @param string $name
  67.      * @return string
  68.      */
  69.     public function jsonDecode($string)
  70.     {
  71.         return json_decode($stringtrue);
  72.     }
  73. }