@@ -302,20 +302,18 @@ other loaders that work the same way:
302
302
* :class: `Symfony\\ Component\\ Routing\\ Loader\\ PhpFileLoader `
303
303
304
304
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::
306
307
307
308
// 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;
317
310
318
- return $routes;
311
+ return function (RoutingConfigurator $routes) {
312
+ $routes->add('route_name', '/foo')
313
+ ->controller('ExampleController')
314
+ // ...
315
+ ;
316
+ };
319
317
320
318
Routes as Closures
321
319
..................
@@ -410,7 +408,7 @@ routes with UTF-8 characters:
410
408
411
409
route1 :
412
410
path : /category/{name}
413
- defaults : { _controller: ' App\Controller\DefaultController::category' }
411
+ controller : App\Controller\DefaultController::category
414
412
options :
415
413
utf8 : true
416
414
@@ -429,23 +427,19 @@ routes with UTF-8 characters:
429
427
430
428
.. code-block :: php
431
429
432
- use Symfony\Component\Routing\RouteCollection;
433
- use Symfony\Component\Routing\Route;
434
-
435
- $routes = new RouteCollection();
436
- $routes->add('route1', new Route('/category/{name}',
437
- [
438
- '_controller' => 'App\Controller\DefaultController::category',
439
- ],
440
- [],
441
- [
442
- 'utf8' => true,
443
- ]
444
- ));
430
+ // config/routes.php
431
+ namespace Symfony\Component\Routing\Loader\Configurator;
445
432
446
- // ...
433
+ use App\Controller\DefaultController;
447
434
448
- 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
+ };
449
443
450
444
In this route, the ``utf8 `` option set to ``true `` makes Symfony consider the
451
445
``. `` requirement to match any UTF-8 characters instead of just a single
@@ -470,22 +464,22 @@ You can also include UTF-8 strings as routing requirements:
470
464
* @Route(
471
465
* "/category/{name}",
472
466
* name="route2",
473
- * requirements ={"default "="한국어"},
467
+ * defaults ={"name "="한국어"},
474
468
* options={"utf8": true}
475
469
* )
476
470
*/
477
- public function default ()
471
+ public function category ()
478
472
{
479
473
// ...
480
474
}
481
475
482
476
.. code-block :: yaml
483
477
484
478
route2 :
485
- path : /default/{default }
486
- defaults : { _controller: 'App\Controller\DefaultController::default' }
487
- requirements :
488
- default : " 한국어"
479
+ path : /category/{name }
480
+ controller : ' App\Controller\DefaultController::category '
481
+ defaults :
482
+ name : " 한국어"
489
483
options :
490
484
utf8 : true
491
485
@@ -497,34 +491,30 @@ You can also include UTF-8 strings as routing requirements:
497
491
xsi : schemaLocation =" http://symfony.com/schema/routing
498
492
http://symfony.com/schema/routing/routing-1.0.xsd" >
499
493
500
- <route id =" route2" path =" /default/{default}"
501
- controller =" App\Controller\DefaultController::default" >
502
- <requirement key =" default" >한국어</requirement >
494
+ <route id =" route2" path =" /category/{name}" controller =" App\Controller\DefaultController::category" >
495
+ <default key =" name" >한국어</default >
503
496
<option key =" utf8" >true</option >
504
497
</route >
505
498
</routes >
506
499
507
500
.. code-block :: php
508
501
509
- use Symfony\Component\Routing\RouteCollection;
510
- use Symfony\Component\Routing\Route;
511
-
512
- $routes = new RouteCollection();
513
- $routes->add('route2', new Route('/default/{default}',
514
- [
515
- '_controller' => 'App\Controller\DefaultController::default',
516
- ],
517
- [
518
- 'default' => '한국어',
519
- ],
520
- [
521
- 'utf8' => true,
522
- ]
523
- ));
524
-
525
- // ...
526
-
527
- 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
+ };
528
518
529
519
.. tip ::
530
520
0 commit comments