Skip to content

Commit a9e707d

Browse files
author
Iltar van der Berg
committed
Added docs for the SessionValueResolver
1 parent fefc2f2 commit a9e707d

File tree

3 files changed

+26
-16
lines changed

3 files changed

+26
-16
lines changed

controller.rst

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,8 @@ For more information, see the :doc:`Routing chapter </routing>`.
184184

185185
.. caution::
186186

187-
The ``redirect()`` method does not check its destination in any way. If you
188-
redirect to some URL provided by the end-users, your application may be open
187+
The ``redirect()`` method does not check its destination in any way. If you
188+
redirect to some URL provided by the end-users, your application may be open
189189
to the `unvalidated redirects security vulnerability`_.
190190

191191

@@ -344,18 +344,17 @@ Symfony provides a nice session object that you can use to store information
344344
about the user between requests. By default, Symfony stores the attributes in a
345345
cookie by using native PHP sessions.
346346

347-
To retrieve the session, call
348-
:method:`Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller::getSession`
349-
method on the ``Request`` object. This method returns a
350-
:class:`Symfony\\Component\\HttpFoundation\\Session\\SessionInterface` with easy
351-
methods for storing and fetching things from the session::
352347

353-
use Symfony\Component\HttpFoundation\Request;
348+
.. versionadded:: 3.3
349+
The ability to request a ``Session`` in actions was introduced in Symfony 3.
354350

355-
public function indexAction(Request $request)
356-
{
357-
$session = $request->getSession();
351+
To retrieve the session, add the :class:`Symfony\\Component\\HttpFoundation\\Session\\Session`
352+
type-hint to your argument and Symfony will provide you with a session::
353+
354+
use Symfony\Component\HttpFoundation\Session\Session;
358355

356+
public function indexAction(Session $session)
357+
{
359358
// store an attribute for reuse during a later user request
360359
$session->set('foo', 'bar');
361360

@@ -368,6 +367,11 @@ methods for storing and fetching things from the session::
368367

369368
Stored attributes remain in the session for the remainder of that user's session.
370369

370+
.. tip::
371+
372+
Every ``SessionInterface`` implementation is supported. If you have your
373+
own implementation, type-hint this in the arguments instead.
374+
371375
.. index::
372376
single: Session; Flash messages
373377

controller/argument_value_resolver.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ functionality.
1818
Functionality Shipped with the HttpKernel
1919
-----------------------------------------
2020

21+
.. versionadded:: 3.3
22+
The ``SessionValueResolver`` was introduced in Symfony 3.3.
23+
2124
Symfony ships with four value resolvers in the HttpKernel component:
2225

2326
:class:`Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\RequestAttributeValueResolver`
@@ -27,6 +30,11 @@ Symfony ships with four value resolvers in the HttpKernel component:
2730
Injects the current ``Request`` if type-hinted with ``Request`` or a class
2831
extending ``Request``.
2932

33+
:class:`Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\SessionValueResolver`
34+
Injects the configured session class extending ``SessionInterface`` if
35+
type-hinted with ``SessionInterface`` or a class extending
36+
``SessionInterface``.
37+
3038
:class:`Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver\\DefaultValueResolver`
3139
Will set the default value of the argument if present and the argument
3240
is optional.

quick_tour/the_controller.rst

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -299,12 +299,10 @@ in a cookie by using native PHP sessions.
299299
Storing and retrieving information from the session can be easily achieved
300300
from any controller::
301301

302-
use Symfony\Component\HttpFoundation\Request;
302+
use Symfony\Component\HttpFoundation\Session\Session;
303303

304-
public function indexAction(Request $request)
304+
public function indexAction(Session $session)
305305
{
306-
$session = $request->getSession();
307-
308306
// store an attribute for reuse during a later user request
309307
$session->set('foo', 'bar');
310308

@@ -319,7 +317,7 @@ You can also store "flash messages" that will auto-delete after the next
319317
request. They are useful when you need to set a success message before
320318
redirecting the user to another page (which will then show the message)::
321319

322-
public function indexAction(Request $request)
320+
public function indexAction()
323321
{
324322
// ...
325323

0 commit comments

Comments
 (0)