Explorar o código

[TwigBundle] Renderer::evaluate() should ensure the Request is both defined and non-empty

This addresses an oversight in my previous commit: 9553971d06875d417695c4a63e03885a608dafb7
Author: Jeremy Mikola <jmikola@gmail.com>
Date:   Thu Jan 6 13:26:45 2011 -0500
Jeremy Mikola %!s(int64=14) %!d(string=hai) anos
pai
achega
0c50ca8775

+ 4 - 3
src/Symfony/Bundle/TwigBundle/Renderer/Renderer.php

@@ -37,9 +37,10 @@ class Renderer extends BaseRenderer
      */
     public function evaluate(Storage $template, array $parameters = array())
     {
-        if ($this->engine->getContainer()->has('request')) {
-            // cannot be set in the constructor as we need the current request
-            $request = $this->engine->getContainer()->get('request');
+        $container = $this->engine->getContainer();
+
+        // cannot be set in the constructor as we need the current request
+        if ($container->has('request') && ($request = $container->get('request'))) {
             $this->environment->addGlobal('request', $request);
             $this->environment->addGlobal('session', $request->getSession());
         }

+ 3 - 1
src/Symfony/Bundle/TwigBundle/Tests/Renderer/RendererTest.php

@@ -42,7 +42,8 @@ class RendererTest extends TestCase
         $environment = $this->getTwigEnvironment();
         $renderer = new Renderer($environment);
 
-        $engine = new Engine(new Container(), $this->getMock('Symfony\Component\Templating\Loader\LoaderInterface'), array());
+        $container = new Container();
+        $engine = new Engine($container, $this->getMock('Symfony\Component\Templating\Loader\LoaderInterface'), array());
 
         $storage = $this->getStorage();
         $template = $this->getMock('\Twig_TemplateInterface');
@@ -52,6 +53,7 @@ class RendererTest extends TestCase
             ->with($storage)
             ->will($this->returnValue($template));
 
+        $container->set('request', null);
         $renderer->setEngine($engine);
         $renderer->evaluate($storage);