Routing v Symfony je proces mapovania URL adries na konkrétne kontroléry a metódy. Jednoducho povedané, určuje, ktorá URL adresa spustí akú logiku v aplikácii. V tomto článku sa pozrieme na rôzne spôsoby definovania routov v Symfony a na to, ako ich správne konfigurovať.
Symfony framework využíva výkonný routing systém, ktorý umožňuje vývojárom:
Bez správneho routovania by bolo veľmi ťažké vytvárať komplexné webové aplikácie.
Symfony ponúka tri hlavné spôsoby definovania routov:
Najčastejší spôsob v Symfony je definovanie routy pomocou anotácií v kontroléri.
<?php // src/Controller/MainController.php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\HttpFoundation\Response; class MainController extends AbstractController { #[Route('/home', name: 'home_page')] public function home(): Response { return <h1>Vitajte na hlavnej stránke!</h1>; } } ?>
routes.yaml
home_page: path: /home controller: App\Controller\MainController::home methods: GET
routes.php
use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\Route; $routes = new RouteCollection(); $routes->add('home_page', new Route('/home', [ '_controller' => 'App\Controller\MainController::home', ])); return $routes;
#[Route('/uzivatel/{id}', name: 'uzivatel_profil')] public function profil(int $id): Response { return <h1>Profil užívateľa s ID: $id</h1>; }
#[Route('/uzivatel/{id}', name: 'uzivatel_profil', defaults: ['id' => 1])]
#[Route('/uzivatel/{id}', name: 'uzivatel_profil', requirements: ['id' => '\d+'])]
$url = $this->generateUrl('uzivatel_profil', ['id' => 5]);
php bin/console debug:router
Skontrolujte, či je správne definovaný názov routy a či nemáte konflikt v URL cestách.
return $this->redirectToRoute('home_page');
FOSRestBundle
.Ak máte záujem o prezenčné alebo online školenie programovania v PHP, pozrite si našu ponuku na www.like-it.sk. Naše kurzy vedú skúsení odborníci, ktorí vám pomôžu zvládnuť Symfony od základov až po pokročilé koncepty.