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é.