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.
Viac informacií preberáme na kurze:
Kurz PHP - Programovanie dynamických webových stránok v PHP a úvod do AJAXu
Marián Knězek