Sfoglia il codice sorgente

merged branch schmittjoh/sessionAutoStartFix (PR #1701)

Commits
-------

af6d4e4 changed test
6d1eb48 fixes a bug during session initialization in test environment

Discussion
----------

fixes a bug during session initialization in test environment
Fabien Potencier 14 anni fa
parent
commit
b64fb60a0f

+ 1 - 1
src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php

@@ -161,7 +161,7 @@ class Configuration implements ConfigurationInterface
                 ->arrayNode('session')
                     ->canBeUnset()
                     ->children()
-                        ->booleanNode('auto_start')->end()
+                        ->booleanNode('auto_start')->defaultFalse()->end()
                         ->scalarNode('default_locale')->defaultValue('en')->end()
                         ->scalarNode('storage_id')->defaultValue('session.storage.native')->end()
                         ->scalarNode('name')->end()

+ 1 - 4
src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

@@ -268,10 +268,7 @@ class FrameworkExtension extends Extension
         $loader->load('session.xml');
 
         // session
-        $session = $container->getDefinition('session');
-        if (!empty($config['auto_start'])) {
-            $session->addMethodCall('start');
-        }
+        $container->getDefinition('session_listener')->addArgument($config['auto_start']);
         $container->setParameter('session.default_locale', $config['default_locale']);
 
         // session storage

+ 4 - 2
src/Symfony/Bundle/FrameworkBundle/EventListener/SessionListener.php

@@ -27,10 +27,12 @@ use Symfony\Component\HttpKernel\Event\GetResponseEvent;
 class SessionListener
 {
     private $container;
+    private $autoStart;
 
-    public function __construct(ContainerInterface $container)
+    public function __construct(ContainerInterface $container, $autoStart = false)
     {
         $this->container = $container;
+        $this->autoStart = $autoStart;
     }
 
     public function onKernelRequest(GetResponseEvent $event)
@@ -50,7 +52,7 @@ class SessionListener
 
         $request->setSession($session = $this->container->get('session'));
 
-        if ($request->hasPreviousSession()) {
+        if ($this->autoStart || $request->hasPreviousSession()) {
             $session->start();
         }
     }

+ 1 - 1
src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

@@ -78,7 +78,7 @@ abstract class FrameworkExtensionTest extends TestCase
         $this->assertTrue($container->hasDefinition('session'), '->registerSessionConfiguration() loads session.xml');
         $this->assertEquals('fr', $container->getParameter('session.default_locale'));
         $this->assertEquals('%session.default_locale%', $container->getDefinition('session')->getArgument(1));
-        $this->assertTrue($container->getDefinition('session')->hasMethodCall('start'));
+        $this->assertTrue($container->getDefinition('session_listener')->getArgument(1));
         $this->assertEquals('session.storage.native', (string) $container->getAlias('session.storage'));
 
         $options = $container->getParameter('session.storage.options');