Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5fc8a92

Browse files
Document new utf8 option of Routing component
1 parent09975d7 commit5fc8a92

File tree

1 file changed

+176
-0
lines changed

1 file changed

+176
-0
lines changed

‎components/routing.rst‎

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,181 @@ automatically in the background if you want to use it. A basic example of the
346346
are saved in the ``cache_dir``. This means your script must have write
347347
permissions for that location.
348348

349+
Unicode Routing Support
350+
~~~~~~~~~~~~~~~~~~~~~~~
351+
352+
..versionadded::3.2
353+
UTF-8 support for route paths and requirements were introduced in
354+
Symfony 3.2.
355+
356+
The Routing component supports UTF-8 characters in route paths and requirements.
357+
Thanks to the ``utf8`` route option, you can make Symfony match and generate
358+
routes with UTF-8 characters:
359+
360+
..configuration-block::
361+
362+
..code-block::php-annotations
363+
364+
// src/AppBundle/Controller/DefaultController.php
365+
namespace AppBundle\Controller;
366+
367+
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
368+
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
369+
370+
class DefaultController extends Controller
371+
{
372+
/**
373+
*
374+
* @Route("/category/{name}", name="route1", options={"utf8": true})
375+
*
376+
*/
377+
public function categoryAction()
378+
{
379+
// ...
380+
}
381+
382+
..code-block::yaml
383+
384+
# routes.yml
385+
route1:
386+
path:/category/{name}
387+
defaults:{ _controller: 'AppBundle:Default:category' }
388+
options:
389+
utf8:true
390+
391+
..code-block::xml
392+
393+
<!-- app/config/routing.xml-->
394+
<?xml version="1.0" encoding="UTF-8" ?>
395+
<routesxmlns="http://symfony.com/schema/routing"
396+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
397+
xsi:schemaLocation="http://symfony.com/schema/routing
398+
http://symfony.com/schema/routing/routing-1.0.xsd">
399+
400+
<routeid="route1"path="/category/{name}">
401+
<defaultkey="_controller">AppBundle:Default:category</default>
402+
<optionkey="utf8">true</option>
403+
</route>
404+
</routes>
405+
406+
..code-block::php
407+
408+
// app/config/routing.php
409+
use Symfony\Component\Routing\RouteCollection;
410+
use Symfony\Component\Routing\Route;
411+
412+
$collection = new RouteCollection();
413+
$collection->add('route1', new Route('/category/{name}',
414+
array(
415+
'_controller' => 'AppBundle:Default:category',
416+
),
417+
array(),
418+
array(
419+
'utf8' => true,
420+
));
421+
422+
// ...
423+
424+
return $collection;
425+
426+
427+
In this route, the ``utf8`` option set to ``true`` makes Symfony consider the
428+
``.`` requirement to match any UTF-8 characters instead of just a single
429+
byte character. This means that so the following URLs would match:
430+
``/category/日本語``, ``/category/فارسی``, ``/category/한국어``, etc. In case ou
431+
are wondering, this option also allows to include and match emojis in URLs.
432+
433+
..configuration-block::
434+
435+
..code-block::php-annotations
436+
437+
// src/AppBundle/Controller/DefaultController.php
438+
namespace AppBundle\Controller;
439+
440+
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
441+
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
442+
443+
class DefaultController extends Controller
444+
{
445+
/**
446+
*
447+
* @Route(
448+
* "/category/{name}",
449+
* name="route2",
450+
* requirements={"default"="한국어"},
451+
* options={"utf8": true}
452+
* )
453+
*
454+
*/
455+
public function defaultAction()
456+
{
457+
// ...
458+
}
459+
460+
..code-block::yaml
461+
462+
# routes.yml
463+
route2:
464+
path:/default/{default}
465+
defaults:{ _controller: 'AppBundle:Default:default' }
466+
requirements:
467+
default:"한국어"
468+
options:
469+
utf8:true
470+
471+
..code-block::xml
472+
473+
<!-- app/config/routing.xml-->
474+
<?xml version="1.0" encoding="UTF-8" ?>
475+
<routesxmlns="http://symfony.com/schema/routing"
476+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
477+
xsi:schemaLocation="http://symfony.com/schema/routing
478+
http://symfony.com/schema/routing/routing-1.0.xsd">
479+
480+
<routeid="route2"path="/default/{default}">
481+
<defaultkey="_controller">AppBundle:Default:default</default>
482+
<requirementkey="default">한국어</requirement>
483+
<optionkey="utf8">true</option>
484+
</route>
485+
</routes>
486+
487+
..code-block::php
488+
489+
// app/config/routing.php
490+
use Symfony\Component\Routing\RouteCollection;
491+
use Symfony\Component\Routing\Route;
492+
493+
$collection = new RouteCollection();
494+
$collection->add('route2', new Route('/default/{default}',
495+
array(
496+
'_controller' => 'AppBundle:Default:default',
497+
),
498+
array(
499+
'default' => '한국어',
500+
),
501+
array(
502+
'utf8' => true,
503+
));
504+
505+
// ...
506+
507+
return $collection;
508+
509+
510+
This second example describes how you can use UTF-8 strings as a routing
511+
requirements.
512+
513+
..note::
514+
515+
In Symfony 3.2 there is no need to set this ``utf8`` option explicitly.
516+
As soon as Symfony finds a UTF-8 character in the route path or requirements,
517+
it will turn the UTF-8 support automatically. In addition to UTF-8
518+
characters, the Routing component also supports all the `PCRE Unicode properties`_,
519+
which are escape sequences that match generic character types. For
520+
example, ``\p{Lu}`` matches any uppercase character in any language,
521+
``\p{Greek}`` matches any Greek character, ``\P{Han}`` matches any character
522+
not included in the Chinese Han script.
523+
349524
Learn more
350525
----------
351526

@@ -360,3 +535,4 @@ Learn more
360535
/configuration/apache_router
361536

362537
.. _Packagist:https://packagist.org/packages/symfony/routing
538+
.. _PCRE Unicode properties:http://php.net/manual/en/regexp.reference.unicode.php

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp