Tvorba a konfigurácia routov v Symfony

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

Čo je routing v Symfony a aký má praktický význam?

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.

1. Spôsoby definovania routov v Symfony

Symfony ponúka tri hlavné spôsoby definovania routov:

1.1 Routing pomocou anotácií

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>;
    }
}
?>

1.2 Routing v konfiguračnom súbore routes.yaml

home_page:
    path: /home
    controller: App\Controller\MainController::home
    methods: GET

1.3 Routing cez 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;

2. Dynamické parametre v routách

#[Route('/uzivatel/{id}', name: 'uzivatel_profil')]
public function profil(int $id): Response
{
    return <h1>Profil užívateľa s ID: $id</h1>;
}

3. Predvolené hodnoty a obmedzenia parametrov

Predvolené hodnoty:

#[Route('/uzivatel/{id}', name: 'uzivatel_profil', defaults: ['id' => 1])]

Obmedzenia parametrov (Regular Expressions):

#[Route('/uzivatel/{id}', name: 'uzivatel_profil', requirements: ['id' => '\d+'])]

4. Generovanie URL v Symfony

$url = $this->generateUrl('uzivatel_profil', ['id' => 5]);

Najčastejšie otázky

1. Ako zobrazím všetky existujúce routy?

php bin/console debug:router

2. Čo ak sa mi nezobrazuje správna stránka pri volaní routy?

Skontrolujte, či je správne definovaný názov routy a či nemáte konflikt v URL cestách.

3. Ako presmerujem používateľa na inú stránku?

return $this->redirectToRoute('home_page');

Top 5 zaujímavých faktov o routovaní v Symfony

  1. Symfony podporuje automatické generovanie routov pomocou atribútov PHP 8.
  2. Routing v Symfony umožňuje presmerovania cez HTTP kódy 301 a 302.
  3. Symfony dokáže spracovať REST API routy priamo pomocou FOSRestBundle.
  4. Každá routa môže mať viacero URL aliasov.
  5. Routing systém Symfony je vysoko optimalizovaný pre rýchlosť spracovania požiadaviek.

Chcete sa naučiť Symfony?

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.

Ako začať programovať?

Úvod do programovania pre každého bez prechádzajúcich znalostí.

Stiahnite so náš ebook teraz výnimočne zdarma!!!

Marián Knězek

 

Súvisiace články: