Skip to content

Commit 7cd23ce

Browse files
committed
minor #11085 Fixed route examples (Jules Pietri)
This PR was squashed before being merged into the 4.2 branch (closes #11085). Discussion ---------- Fixed route examples Fixes partially #8462 and #10762. Commits ------- 21408cf Fixed route examples
2 parents 8a10de0 + 21408cf commit 7cd23ce

21 files changed

+610
-598
lines changed

components/routing.rst

Lines changed: 46 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -302,20 +302,18 @@ other loaders that work the same way:
302302
* :class:`Symfony\\Component\\Routing\\Loader\\PhpFileLoader`
303303

304304
If you use the :class:`Symfony\\Component\\Routing\\Loader\\PhpFileLoader` you
305-
have to provide the name of a PHP file which returns a :class:`Symfony\\Component\\Routing\\RouteCollection`::
305+
have to provide the name of a PHP file which returns a callable handling a :class:`Symfony\\Component\\Routing\\Loader\\Configurator\\RoutingConfigurator`.
306+
This class allows to chain imports, collections or simple route definition calls::
306307

307308
// RouteProvider.php
308-
use Symfony\Component\Routing\RouteCollection;
309-
use Symfony\Component\Routing\Route;
310-
311-
$routes = new RouteCollection();
312-
$routes->add(
313-
'route_name',
314-
new Route('/foo', ['_controller' => 'ExampleController'])
315-
);
316-
// ...
309+
namespace Symfony\Component\Routing\Loader\Configurator;
317310

318-
return $routes;
311+
return function (RoutingConfigurator $routes) {
312+
$routes->add('route_name', '/foo')
313+
->controller('ExampleController')
314+
// ...
315+
;
316+
};
319317

320318
Routes as Closures
321319
..................
@@ -410,7 +408,7 @@ routes with UTF-8 characters:
410408
411409
route1:
412410
path: /category/{name}
413-
defaults: { _controller: 'App\Controller\DefaultController::category' }
411+
controller: App\Controller\DefaultController::category
414412
options:
415413
utf8: true
416414
@@ -422,31 +420,26 @@ routes with UTF-8 characters:
422420
xsi:schemaLocation="http://symfony.com/schema/routing
423421
http://symfony.com/schema/routing/routing-1.0.xsd">
424422
425-
<route id="route1" path="/category/{name}">
426-
<default key="_controller">App\Controller\DefaultController::category</default>
423+
<route id="route1" path="/category/{name}" controller="App\Controller\DefaultController::category">
427424
<option key="utf8">true</option>
428425
</route>
429426
</routes>
430427
431428
.. code-block:: php
432429
433-
use Symfony\Component\Routing\RouteCollection;
434-
use Symfony\Component\Routing\Route;
435-
436-
$routes = new RouteCollection();
437-
$routes->add('route1', new Route('/category/{name}',
438-
[
439-
'_controller' => 'App\Controller\DefaultController::category',
440-
],
441-
[],
442-
[
443-
'utf8' => true,
444-
]
445-
));
430+
// config/routes.php
431+
namespace Symfony\Component\Routing\Loader\Configurator;
446432
447-
// ...
433+
use App\Controller\DefaultController;
448434
449-
return $routes;
435+
return function (RoutingConfigurator $routes) {
436+
$routes->add('route1', '/category/{name}')
437+
->controller([DefaultController::class, 'category'])
438+
->options([
439+
'utf8' => true,
440+
])
441+
;
442+
};
450443
451444
In this route, the ``utf8`` option set to ``true`` makes Symfony consider the
452445
``.`` requirement to match any UTF-8 characters instead of just a single
@@ -471,22 +464,22 @@ You can also include UTF-8 strings as routing requirements:
471464
* @Route(
472465
* "/category/{name}",
473466
* name="route2",
474-
* requirements={"default"="한국어"},
467+
* defaults={"name"="한국어"},
475468
* options={"utf8": true}
476469
* )
477470
*/
478-
public function default()
471+
public function category()
479472
{
480473
// ...
481474
}
482475
483476
.. code-block:: yaml
484477
485478
route2:
486-
path: /default/{default}
487-
defaults: { _controller: 'App\Controller\DefaultController::default' }
488-
requirements:
489-
default: "한국어"
479+
path: /category/{name}
480+
controller: 'App\Controller\DefaultController::category'
481+
defaults:
482+
name: "한국어"
490483
options:
491484
utf8: true
492485
@@ -498,34 +491,30 @@ You can also include UTF-8 strings as routing requirements:
498491
xsi:schemaLocation="http://symfony.com/schema/routing
499492
http://symfony.com/schema/routing/routing-1.0.xsd">
500493
501-
<route id="route2" path="/default/{default}">
502-
<default key="_controller">App\Controller\DefaultController::default</default>
503-
<requirement key="default">한국어</requirement>
494+
<route id="route2" path="/category/{name}" controller="App\Controller\DefaultController::category">
495+
<default key="name">한국어</default>
504496
<option key="utf8">true</option>
505497
</route>
506498
</routes>
507499
508500
.. code-block:: php
509501
510-
use Symfony\Component\Routing\RouteCollection;
511-
use Symfony\Component\Routing\Route;
512-
513-
$routes = new RouteCollection();
514-
$routes->add('route2', new Route('/default/{default}',
515-
[
516-
'_controller' => 'App\Controller\DefaultController::default',
517-
],
518-
[
519-
'default' => '한국어',
520-
],
521-
[
522-
'utf8' => true,
523-
]
524-
));
525-
526-
// ...
527-
528-
return $routes;
502+
// config/routes.php
503+
namespace Symfony\Component\Routing\Loader\Configurator;
504+
505+
use App\Controller\DefaultController;
506+
507+
return function (RoutingConfigurator $routes) {
508+
$routes->add('route2', '/category/{name}')
509+
->controller([DefaultController::class, 'category'])
510+
->defaults([
511+
'name' => '한국어',
512+
])
513+
->options([
514+
'utf8' => true,
515+
])
516+
;
517+
};
529518
530519
.. tip::
531520

controller/error_pages.rst

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -171,22 +171,19 @@ automatically when installing Twig support):
171171
xsi:schemaLocation="http://symfony.com/schema/routing
172172
http://symfony.com/schema/routing/routing-1.0.xsd">
173173
174-
<import resource="@TwigBundle/Resources/config/routing/errors.xml"
175-
prefix="/_error" />
174+
<import resource="@TwigBundle/Resources/config/routing/errors.xml" prefix="/_error" />
176175
</routes>
177176
178177
.. code-block:: php
179178
180179
// config/routes/dev/twig.php
181-
use Symfony\Component\Routing\RouteCollection;
180+
namespace Symfony\Component\Routing\Loader\Configurator;
182181
183-
$routes = new RouteCollection();
184-
$routes->addCollection(
185-
$loader->import('@TwigBundle/Resources/config/routing/errors.xml')
186-
);
187-
$routes->addPrefix("/_error");
188-
189-
return $routes;
182+
return function (RoutingConfigurator $routes) {
183+
$routes->import('@TwigBundle/Resources/config/routing/errors.xml')
184+
->prefix('/_error')
185+
;
186+
};
190187
191188
With this route added, you can use URLs like these to preview the *error* page
192189
for a given status code as HTML or for a given status code and format.

controller/service.rst

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ a service like: ``App\Controller\HelloController::index``:
3232
class HelloController
3333
{
3434
/**
35-
* @Route("/hello", name="hello")
35+
* @Route("/hello", name="hello", methods={"GET"})
3636
*/
3737
public function index()
3838
{
@@ -45,7 +45,8 @@ a service like: ``App\Controller\HelloController::index``:
4545
# config/routes.yaml
4646
hello:
4747
path: /hello
48-
defaults: { _controller: App\Controller\HelloController::index }
48+
controller: App\Controller\HelloController::index
49+
methods: GET
4950
5051
.. code-block:: xml
5152
@@ -56,18 +57,23 @@ a service like: ``App\Controller\HelloController::index``:
5657
xsi:schemaLocation="http://symfony.com/schema/routing
5758
http://symfony.com/schema/routing/routing-1.0.xsd">
5859
59-
<route id="hello" path="/hello">
60-
<default key="_controller">App\Controller\HelloController::index</default>
61-
</route>
60+
<route id="hello" path="/hello" controller="App\Controller\HelloController::index" methods="GET" />
6261
6362
</routes>
6463
6564
.. code-block:: php
6665
6766
// config/routes.php
68-
$collection->add('hello', new Route('/hello', [
69-
'_controller' => 'App\Controller\HelloController::index',
70-
]));
67+
namespace Symfony\Component\Routing\Loader\Configurator;
68+
69+
use App\Controller\HelloController;
70+
71+
return function (RoutingConfigurator $routes) {
72+
$routes->add('hello', '/hello')
73+
->controller(['HelloController::class, 'index'])
74+
->methods(['GET'])
75+
;
76+
};
7177
7278
.. _controller-service-invoke:
7379

0 commit comments

Comments
 (0)