From 85d4a0d55f2dae0a94e4a524857026589767e456 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Thu, 27 May 2010 09:25:16 +0200 Subject: [PATCH] added a way to pass default options to splitTemplateName --- .../Framework/TwigBundle/Loader/Loader.php | 6 +++--- .../Framework/WebBundle/Templating/Engine.php | 21 +++++++++++++------ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/Symfony/Framework/TwigBundle/Loader/Loader.php b/src/Symfony/Framework/TwigBundle/Loader/Loader.php index 0b4cc4f4a4e2..91d7ee14f895 100644 --- a/src/Symfony/Framework/TwigBundle/Loader/Loader.php +++ b/src/Symfony/Framework/TwigBundle/Loader/Loader.php @@ -43,7 +43,7 @@ public function getSource($name) 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 @@ public function getCacheKey($name) 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 @@ public function isFresh($name, $time) 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); } diff --git a/src/Symfony/Framework/WebBundle/Templating/Engine.php b/src/Symfony/Framework/WebBundle/Templating/Engine.php index 6fe8ace60956..0cabb140577d 100644 --- a/src/Symfony/Framework/WebBundle/Templating/Engine.php +++ b/src/Symfony/Framework/WebBundle/Templating/Engine.php @@ -119,17 +119,26 @@ protected function escapeParameters(array $parameters) } // 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;