8000 Add stateless route attribute documentation · symfony/symfony-docs@eb9de96 · GitHub
[go: up one dir, main page]

Skip to content

Commit eb9de96

Browse files
committed
Add stateless route attribute documentation
1 parent 1e3df40 commit eb9de96

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

routing.rst

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1805,6 +1805,77 @@ with a locale. This can be done by defining a different prefix for each locale
18051805
;
18061806
};
18071807
1808+
.. _stateless-routing:
1809+
1810+
Stateless Routes
1811+
----------------
1812+
1813+
Routes can configure a ``stateless`` boolean option in order to make sure that the controller
1814+
is not using the session during the request handling.
1815+
1816+
.. configuration-block::
1817+
1818+
.. code-block:: php-annotations
1819+
1820+
// src/Controller/MainController.php
1821+
namespace App\Controller;
1822+
1823+
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
1824+
use Symfony\Component\Routing\Annotation\Route;
1825+
1826+
class MainController extends AbstractController
1827+
{
1828+
/**
1829+
* @Route("/", name="homepage", stateless=true)
1830+
*/
1831+
public function homepage()
1832+
{
1833+
// ...
1834+
}
1835+
}
10000
1836+
1837+
.. code-block:: yaml
1838+
1839+
# config/routes.yaml
1840+
homepage:
1841+
controller: App\Controller\MainController::homepage
1842+
path: /
1843+
stateless: true
1844+
1845+
.. code-block:: xml
1846+
1847+
<!-- config/routes.xml -->
1848+
<?xml version="1.0" encoding="UTF-8" ?>
1849+
<routes xmlns="http://symfony.com/schema/routing"
1850+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1851+
xsi:schemaLocation="http://symfony.com/schema/routing
1852+
https://symfony.com/schema/routing/routing-1.0.xsd">
1853+
<route id="homepage" controller="App\Controller\MainController::homepage" path="/" stateless="true"/>
1854+
</routes>
1855+
1856+
.. code-block:: php
1857+
1858+
// config/routes.php
1859+
use App\Controller\MainController;
1860+
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
1861+
1862+
return function (RoutingConfigurator $routes) {
1863+
$routes->add('homepage', '/')
1864+
->controller([MainController::class, 'homepage'])
1865+
->stateless()
1866+
;
1867+
};
1868+
1869+
If a stateless declared route is using the session, the application will:
1870+
- Throw an `Symfony\\Component\\HttpKernel\\Exception\\UnexpectedSessionUsageException` when debugging is enabled
1871+
- Log a warning w 7CBC hen debugging is disabled.
1872+
1873+
.. tip::
1874+
1875+
When the application uses full "language + territory" locales (e.g. ``fr_FR``,
1876+
``fr_BE``), if the URLs are the same in all related locales, routes can use
1877+
only the language part (e.g. ``fr``) to avoid repeating the same URLs.
1878+
18081879
.. _routing-generating-urls:
18091880

18101881
Generating URLs

0 commit comments

Comments
 (0)
0