@@ -348,18 +348,17 @@ Symfony provides a nice session object that you can use to store information
348
348
about the user between requests. By default, Symfony stores the attributes in a
349
349
cookie by using native PHP sessions.
350
350
351
- To retrieve the session, call
352
- :method: `Symfony\\ Bundle\\ FrameworkBundle\\ Controller\\ Controller::getSession `
353
- method on the ``Request `` object. This method returns a
354
- :class: `Symfony\\ Component\\ HttpFoundation\\ Session\\ SessionInterface ` with easy
355
- methods for storing and fetching things from the session::
356
351
357
- use Symfony\Component\HttpFoundation\Request;
352
+ .. versionadded :: 3.3
353
+ The ability to request a ``Session `` in actions was introduced in Symfony 3.3.
358
354
359
- public function indexAction(Request $request)
360
- {
361
- $session = $request->getSession();
355
+ To retrieve the session, add the :class: `Symfony\\ Component\\ HttpFoundation\\ Session\\ SessionInterface `
356
+ type-hint to your argument and Symfony will provide you with a session::
357
+
358
+ use Symfony\Component\HttpFoundation\Session\SessionInterface;
362
359
360
+ public function indexAction(SessionInterface $session)
361
+ {
363
362
// store an attribute for reuse during a later user request
364
363
$session->set('foo', 'bar');
365
364
@@ -372,6 +371,23 @@ methods for storing and fetching things from the session::
372
371
373
372
Stored attributes remain in the session for the remainder of that user's session.
374
373
374
+ .. tip ::
375
+
376
+ Every ``SessionInterface `` implementation is supported. If you have your
377
+ own implementation, type-hint this in the arguments instead.
378
+
379
+ As a developer, you might prefer not to extend the ``Controller ``. To use the
380
+ flash message functionality, you can request the flash bag from the
381
+ :class: `Symfony\\ Component\\ HttpFoundation\\ Session\\ Session `::
382
+
383
+ use Symfony\Component\HttpFoundation\Session\Session;
384
+
385
+ public function indexAction(Session $session)
386
+ {
387
+ // getFlashBag is not available in the SessionInterface and requires the Session
388
+ $flashBag = $session->getFlashBag();
389
+ }
390
+
375
391
.. index ::
376
392
single: Session; Flash messages
377
393
0 commit comments