mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-21 07:37:43 +00:00
refactored Twig_Template::display() to ease its extension
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
* 1.5.0-RC2
|
||||
|
||||
* refactored Twig_Template::display() to ease its extension
|
||||
* added a number_format filter
|
||||
|
||||
* 1.5.0-RC1 (2011-12-26)
|
||||
|
||||
+25
-15
@@ -227,21 +227,7 @@ abstract class Twig_Template implements Twig_TemplateInterface
|
||||
*/
|
||||
public function display(array $context, array $blocks = array())
|
||||
{
|
||||
// we don't use array_merge as the context being generally
|
||||
// bigger than globals, this code is faster.
|
||||
foreach ($this->env->getGlobals() as $key => $value) {
|
||||
if (!array_key_exists($key, $context)) {
|
||||
$context[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$this->doDisplay($context, $blocks);
|
||||
} catch (Twig_Error $e) {
|
||||
throw $e;
|
||||
} catch (Exception $e) {
|
||||
throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, null, $e);
|
||||
}
|
||||
$this->displayWithErrorHandling($this->mergeContextWithGlobals($context), $blocks);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -264,6 +250,30 @@ abstract class Twig_Template implements Twig_TemplateInterface
|
||||
return ob_get_clean();
|
||||
}
|
||||
|
||||
protected function mergeContextWithGlobals(array $context)
|
||||
{
|
||||
// we don't use array_merge as the context being generally
|
||||
// bigger than globals, this code is faster.
|
||||
foreach ($this->env->getGlobals() as $key => $value) {
|
||||
if (!array_key_exists($key, $context)) {
|
||||
$context[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
return $context;
|
||||
}
|
||||
|
||||
protected function displayWithErrorHandling(array $context, array $blocks = array())
|
||||
{
|
||||
try {
|
||||
$this->doDisplay($context, $blocks);
|
||||
} catch (Twig_Error $e) {
|
||||
throw $e;
|
||||
} catch (Exception $e) {
|
||||
throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, null, $e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Auto-generated method to display the template with the given context.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user