Les Routes dans Symfony
Routage
En Annotations
... use Symfony\Component\Routing\Annotation\Route; ... class CheckVersionController { /** * @Route("/api/checkv", name="api_checkversion")
Récuperer une variable depuis le path de l'Url
Dans l'exemple ci dessous on récupére la variable {proj} contenue dans la route.
Elle est transmise automatiquement a la fonction grâce a son nom proj
→$proj
/** * @Route("/api/checkv/{proj}", name="api_checkversion") */ public function check(string $proj) { return new Response('Projet:'.$proj); }
Routage en fonction de la méthord GET POST etc...
Dans le code ci dessous, si l'appel est fait en GET
on exécute la function check()
si l'appel est fait en POST
ou PUT
on exécute la function add_project()
class MonController extends AbstractController { /** * @Route("/api/checkv", name="api_checkVersion", methods={"GET"}) */ public function check(Request $request, SerializerInterface $serializer ) {....} /** * @Route("/api/checkv", name="api_addProj", methods={"POST","PUT"}) */ public function add_project(Request $request, SerializerInterface $serializer ) {...} }
Générer des routes
Dans un Controller
Grâce a la méthode generateUrl
de la classe AbstractController et ses descendants.
- vendor\symfony\framework-bundle\Controller\ControllerTrait.php
protected function generateUrl(string $route, array $parameters = [], int $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH): string
Avec les parametres :
- string
$route
: Le nom de la route a generer. - array
$parameters
: les parametre a remplacer dans le nom de la route. - integer
$referenceType
: Peut prendre les valeurs…ABSOLUTE_URL
: Generates an absolute URL, e.g. “http://example.com/dir/file”.ABSOLUTE_PATH
: Generates an absolute path, e.g. “/dir/file”.RELATIVE_PATH
: Generates a relative path based on the current request path, e.g. “../parent-file”. (@see UrlGenerator::getRelativePath())NETWORK_PATH
: Generates a network path, e.g. “/ /example.com/dir/file”. Such reference reuses the current scheme but specifies the host.
Exemple :
... @Route("/api/checkv/{projname}", name="check_version", methods={"GET"}) ... $location = $this->generateUrl('check_version', ['projname' => 'ProjectTest'],UrlGeneratorInterface::ABSOLUTE_URL); ... Résultat: http://127.0.0.1:8000/api/checkv/ProjectTest
Ressources
Vous pourriez laisser un commentaire si vous étiez connecté.