Sfoglia il codice sorgente

[TwigBundle] added support for template as Twig_Template instances

Fabien Potencier 14 anni fa
parent
commit
710a1e56b0

+ 5 - 1
src/Symfony/Bundle/TwigBundle/Extension/FormExtension.php

@@ -270,7 +270,11 @@ class FormExtension extends \Twig_Extension
         $templates = array();
         foreach ($resources as $resource)
         {
-            $blocks = $this->resolveTemplate($this->environment->loadTemplate($resource));
+            if (!$resource instanceof \Twig_Template) {
+                $resource = $this->environment->loadTemplate($resource);
+            }
+
+            $blocks = $this->resolveTemplate($resource);
 
             $templates = array_replace($templates, $blocks);
         }

+ 8 - 0
src/Symfony/Bundle/TwigBundle/TwigEngine.php

@@ -89,6 +89,10 @@ class TwigEngine implements EngineInterface
      */
     public function load($name)
     {
+        if ($name instanceof \Twig_Template) {
+            return $name;
+        }
+
         return $this->environment->loadTemplate($this->parser->parse($name), is_array($name) ? json_encode($name) : $name);
     }
 
@@ -101,6 +105,10 @@ class TwigEngine implements EngineInterface
      */
     public function supports($name)
     {
+        if ($name instanceof \Twig_Template) {
+            return true;
+        }
+
         $template = $this->parser->parse($name);
 
         return 'twig' === $template['engine'];