@@ -1805,6 +1805,77 @@ with a locale. This can be done by defining a different prefix for each locale
1805
1805
;
1806
1806
};
1807
1807
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
+
1808
1879
.. _routing-generating-urls :
1809
1880
1810
1881
Generating URLs
0 commit comments