... use Symfony\Component\Routing\Annotation\Route; ... class CheckVersionController { /** * @Route("/api/checkv", name="api_checkversion")
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); }
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 ) {...} }
Grâce a la méthode generateUrl
de la classe AbstractController et ses descendants.
protected function generateUrl(string $route, array $parameters = [], int $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH): string
Avec les parametres :
$route
: Le nom de la route a generer.$parameters
: les parametre a remplacer dans le nom de la route.$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