Преглед изворни кода

fixes a bug during session initialization in test environment

Johannes Schmitt пре 14 година
родитељ
комит
6d1eb48a9b

+ 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();
         }
     }