Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| framework-web:symfony:routing [2018/01/31 01:06] – [Paramètres de route et requirements] jcheron | framework-web:symfony:routing [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 93: | Ligne 93: | ||
| Le router choisira toujours dans ce cas la première correspondance trouvée : la route **blog_list**, | Le router choisira toujours dans ce cas la première correspondance trouvée : la route **blog_list**, | ||
| - | Il est possible d' | + | Il est possible d' |
| On ajoute dans ce cas un " | On ajoute dans ce cas un " | ||
| Ligne 117: | Ligne 117: | ||
| </ | </ | ||
| + | ===== Valeur par défaut ===== | ||
| + | Il est possible de donner à un paramètre une valeur par défaut : | ||
| + | <sxh php; | ||
| + | namespace App\Controller; | ||
| + | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||
| + | use Symfony\Component\Routing\Annotation\Route; | ||
| + | class BlogController extends Controller | ||
| + | { | ||
| + | /** | ||
| + | * @Route("/ | ||
| + | */ | ||
| + | public function list($page = 1) | ||
| + | { | ||
| + | // ... | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Méthode HTTP ===== | ||
| + | L' | ||
| + | |||
| + | <sxh php; | ||
| + | namespace App\Controller; | ||
| + | |||
| + | // ... | ||
| + | |||
| + | class BlogApiController extends Controller | ||
| + | { | ||
| + | /** | ||
| + | * @Route("/ | ||
| + | */ | ||
| + | public function show($id) | ||
| + | { | ||
| + | // ... return a JSON response with the post | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * @Route("/ | ||
| + | */ | ||
| + | public function edit($id) | ||
| + | { | ||
| + | // ... edit a post | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Paramètres de routage spéciaux ===== | ||
| + | |||
| + | 4 paramètres spéciaux sont utilisable au niveau des routes : | ||
| + | |< | ||
| + | ^ _controller | Permet de spécifier le contrôleur à exécuter quand la route est sollicitée. | | ||
| + | ^_format | Utilisé pour définir le format de la requête (html, json...) voir [[https:// | ||
| + | ^_fragment | Utilisé pour définir le fragment après le # dans le cas d'une url interne à la page | | ||
| + | ^_locale |Utilisé pour définir la " | ||
| + | |||
| + | Exemple : | ||
| + | |||
| + | <sxh php; | ||
| + | |||
| + | // ... | ||
| + | class ArticleController extends Controller | ||
| + | { | ||
| + | /** | ||
| + | * @Route( | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | * ) | ||
| + | */ | ||
| + | public function show($_locale, | ||
| + | { | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Génération d'URLs ===== | ||
| + | |||
| + | ==== Depuis un contrôleur ==== | ||
| + | |||
| + | <sxh php> | ||
| + | class MainController extends Controller | ||
| + | { | ||
| + | public function show($slug) | ||
| + | { | ||
| + | // ... | ||
| + | |||
| + | // / | ||
| + | $url = $this-> | ||
| + | ' | ||
| + | array(' | ||
| + | ); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== URL avec paramètres ==== | ||
| + | Les variables supplémentaires sont ajoutées en tant que query string : | ||
| + | <sxh php> | ||
| + | $this-> | ||
| + | ' | ||
| + | ' | ||
| + | )); | ||
| + | // / | ||
| + | </ | ||
| + | |||
| + | ==== Génération depuis un service ==== | ||
| + | |||
| + | Il est nécessaire d' | ||
| + | |||
| + | <sxh php; | ||
| + | use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | ||
| + | |||
| + | class SomeService | ||
| + | { | ||
| + | private $router; | ||
| + | |||
| + | public function __construct(UrlGeneratorInterface $router) | ||
| + | { | ||
| + | $this-> | ||
| + | } | ||
| + | |||
| + | public function someMethod() | ||
| + | { | ||
| + | $url = $this-> | ||
| + | ' | ||
| + | array(' | ||
| + | ); | ||
| + | // ... | ||
| + | } | ||
| + | } | ||
| + | </ | ||