diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml index 8b68d9e846dd..9f3a5b78c1e2 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml @@ -13,8 +13,6 @@ - - @@ -37,10 +35,14 @@ - + + + - + + + %kernel.cache_dir%/sessions diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Controller/InjectedFlashbagSessionController.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Controller/InjectedFlashbagSessionController.php new file mode 100644 index 000000000000..20c33a17e435 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Controller/InjectedFlashbagSessionController.php @@ -0,0 +1,36 @@ +flashBag = $flashBag; + $this->router = $router; + } + + public function setFlashAction(Request $request, $message) + { + $this->flashBag->add('notice', $message); + + return new RedirectResponse($this->router->generate('session_showflash')); + } +} diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml index 923204ab0f42..3ae5669c90b3 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml @@ -18,6 +18,10 @@ session_setflash: path: /session_setflash/{message} defaults: { _controller: TestBundle:Session:setFlash} +injected_flashbag_session_setflash: + path: injected_flashbag/session_setflash/{message} + defaults: { _controller: TestBundle:InjectedFlashbagSession:setFlash} + session_showflash: path: /session_showflash defaults: { _controller: TestBundle:Session:showFlash} diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SessionTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SessionTest.php index 3a87f7e4e6e0..1b1ef9ffc0bf 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SessionTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SessionTest.php @@ -69,6 +69,29 @@ public function testFlash($config, $insulate) $this->assertStringContainsString('No flash was set.', $crawler->text()); } + /** + * Tests flash messages work when flashbag service is injected to the constructor. + * + * @dataProvider getConfigs + */ + public function testFlashOnInjectedFlashbag($config, $insulate) + { + $client = $this->createClient(['test_case' => 'Session', 'root_config' => $config]); + if ($insulate) { + $client->insulate(); + } + + // set flash + $client->request('GET', '/injected_flashbag/session_setflash/Hello%20world.'); + + // check flash displays on redirect + $this->assertStringContainsString('Hello world.', $client->followRedirect()->text()); + + // check flash is gone + $crawler = $client->request('GET', '/session_showflash'); + $this->assertStringContainsString('No flash was set.', $crawler->text()); + } + /** * See if two separate insulated clients can run without * polluting each other's session data. diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Session/config.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Session/config.yml index ad6bdb691ca5..4807c42d1ede 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Session/config.yml +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Session/config.yml @@ -5,3 +5,7 @@ services: Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\Controller\SubRequestController: tags: - { name: controller.service_arguments, action: indexAction, argument: handler, id: fragment.handler } + + Symfony\Bundle\FrameworkBundle\Tests\Functional\Bundle\TestBundle\Controller\InjectedFlashbagSessionController: + autowire: true + tags: ['controller.service_arguments']