Een route koppelt een URL aan een stukje code. Als iemand /producten bezoekt, weet Symfony dankzij de route welke code uitgevoerd moet worden. In deze les leer je hoe je routes definieert in Symfony.
1 Wat is een route?
Stel je voor: een bezoeker typt https://mijnwebsite.nl/producten in de browser. Hoe weet de server wat hij moet laten zien? Dat regelt een route.
In Symfony definieer je routes als PHP Attributes — dat zijn annotaties die je direct boven een methode plaatst. Symfony leest die automatisch in.
2 Je eerste route schrijven
Een route schrijf je als een #[Route(...)] attribuut boven een methode in een Controller-klasse.
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ProductController extends AbstractController
{
// Koppel de URL '/producten' aan deze methode
#[Route('/producten', name: 'product_index')]
public function index(): Response
{
// Deze code draait als iemand /producten bezoekt
return new Response('<h1>Lijst van producten</h1>');
}
}
Het URL-pad dat wordt gematcht
Unieke naam om de route mee te linken
De methode die uitgevoerd wordt
3 Route parameters: variabele URL-delen
Soms wil je een variabel stuk in de URL, zoals een product-ID. Dat doe je met accolades: {id}. Symfony geeft die waarde dan automatisch door als parameter.
// URL: /producten/42 → $id = 42
// URL: /producten/7 → $id = 7
#[Route('/producten/{id}', name: 'product_detail')]
public function detail(int $id): Response
{
// $id bevat automatisch het getal uit de URL
return new Response("Je bekijkt product nummer: $id");
}
// Je kunt ook een standaardwaarde instellen
#[Route('/producten/{id}', name: 'product_detail', defaults: ['id' => 1])]
public function detail(int $id = 1): Response
{
return new Response("Product: $id");
}
🧪 Probeer het uit: welke waarde krijgt $id?
4 Route namen en linken
Je geeft elke route een naam (bijv. product_index). In je templates gebruik je die naam om een link te maken. Zo hoef je geen URL hardcoded in te typen.
{# Maak een link naar de route met naam 'product_index' #}
<a href="{{ path('product_index') }}">Alle producten</a>
{# Link met een parameter (bijv. product met id=5) #}
<a href="{{ path('product_detail', {id: 5}) }}">Product 5</a>
{# In een controller gebruik je redirectToRoute() #}
return $this->redirectToRoute('product_index');
💡 Waarom namen gebruiken? Als je de URL later verandert (van /producten naar /shop), hoef je alleen de route aan te passen — alle links in je templates werken automatisch mee.
5 Oefenen: schrijf je eigen routes
Pas de code hieronder aan. Voeg een nieuwe route toe voor de URL /over-ons met naam over_ons.
📋 Samenvatting
- ✓ Een route koppelt een URL aan een controller-methode
- ✓ Je schrijft routes als
#[Route('/pad', name: 'naam')]boven een methode - ✓ Met
{id}maak je variabele URL-delen (parameters) - ✓ Gebruik
path('route_naam')in Twig om links te maken - ✓ Geef elke route een unieke naam zodat links flexibel blijven
Kennischeck
Test of je de stof begrepen hebt
Klaar met deze les? Markeer hem als voltooid!