Example #1
0
 /**
  * Add Twig extensions.
  *
  * @param ExtensionInterface $extension
  * @param string             $name
  *
  * @throws \Exception
  */
 private function loadExtensionTwig(ExtensionInterface $extension, $name)
 {
     if (!is_callable([$extension, 'getTwigExtensions'])) {
         return;
     }
     /** @var \Twig_Extension[] $extensions */
     $twigExtensions = $extension->getTwigExtensions();
     $addTwigExFunc = [$this, 'addTwigExtension'];
     foreach ($twigExtensions as $twigExtension) {
         $this->app['twig'] = $this->app->share($this->app->extend('twig', function (\Twig_Environment $twig) use($addTwigExFunc, $twigExtension, $name) {
             call_user_func($addTwigExFunc, $twig, $twigExtension, $name);
             return $twig;
         }));
         if (!is_callable([$extension, 'isSafe']) || !$extension->isSafe()) {
             continue;
         }
         $this->app['safe_twig'] = $this->app->share($this->app->extend('safe_twig', function (\Twig_Environment $twig) use($addTwigExFunc, $twigExtension, $name) {
             call_user_func($addTwigExFunc, $twig, $twigExtension, $name);
             return $twig;
         }));
     }
 }