Browse Source

added a way to pass default options to splitTemplateName

Fabien Potencier 15 years ago
parent
commit
85d4a0d55f

+ 3 - 3
src/Symfony/Framework/TwigBundle/Loader/Loader.php

@@ -43,7 +43,7 @@ class Loader implements \Twig_LoaderInterface
             return $name->getContent();
         }
 
-        list($name, $options) = $this->engine->splitTemplateName($name);
+        list($name, $options) = $this->engine->splitTemplateName($name, array('renderer' => 'twig'));
 
         $template = $this->engine->getLoader()->load($name, $options);
 
@@ -67,7 +67,7 @@ class Loader implements \Twig_LoaderInterface
             return (string) $name;
         }
 
-        list($name, $options) = $this->engine->splitTemplateName($name);
+        list($name, $options) = $this->engine->splitTemplateName($name, array('renderer' => 'twig'));
 
         return $name.'_'.serialize($options);
     }
@@ -88,7 +88,7 @@ class Loader implements \Twig_LoaderInterface
             return false;
         }
 
-        list($name, $options) = $this->engine->splitTemplateName($name);
+        list($name, $options) = $this->engine->splitTemplateName($name, array('renderer' => 'twig'));
 
         return $this->engine->getLoader()->isFresh($name, $options, $time);
     }

+ 15 - 6
src/Symfony/Framework/WebBundle/Templating/Engine.php

@@ -119,17 +119,26 @@ class Engine extends BaseEngine
     }
 
     // Bundle:controller:action(:renderer)
-    public function splitTemplateName($name)
+    public function splitTemplateName($name, array $defaults = array())
     {
         $parts = explode(':', $name, 4);
 
-        $options = array(
-            'bundle'     => str_replace('\\', '/', $parts[0]),
-            'controller' => $parts[1],
-            'renderer'   => isset($parts[3]) && $parts[3] ? $parts[3] : 'php',
-            'format'     => '',
+        $options = array_replace(
+            array(
+                'renderer' => 'php',
+                'format'   => '',
+            ),
+            $defaults,
+            array(
+                'bundle'     => str_replace('\\', '/', $parts[0]),
+                'controller' => $parts[1],
+            )
         );
 
+        if (isset($parts[3]) && $parts[3]) {
+            $options['renderer'] = $parts[3];
+        }
+
         $format = $this->container->getRequestService()->getRequestFormat();
         if (null !== $format && 'html' !== $format) {
             $options['format'] = '.'.$format;