Controller
Wat is een Controller
Een Controller fungeert als het centrale verwerkingspunt van je applicatie. In een Controller wordt alle data verwerkt, worden routes naar pagina's gedefinieerd en wordt data opgehaald, gevalideerd en opgeslagen in de database.
Waar nodig kan een Controller ook andere taken uitvoeren zoals het versturen van e-mails of het ophalen/versturen van data naar een andere applicatie (API). Denk bijvoorbeeld aan een koppeling met een betaalsysteem zoals Mollie (iDEAL).
Een nieuwe controller aanmaken
Voor het aanmaken van een controller gebruik je het standaard Symfony-commando: symfony console make:controller [ControllerName]. Je kunt de naam van de controller direct meegeven, anders vraagt Symfony er zelf om.
bash# symfony console make:controller Book created: src/Controller/BookController.php created: templates/book/index.html.twig Success! Next: Open your new controller class and add some pages!
Het aanmaken van een Controller is eenvoudig.
Zoals je ziet worden bij het aanmaken van een Controller direct twee bestanden gegenereerd: de Controller zelf in src/Controller/BookController.php en een TWIG-bestand in templates/book/index.html.twig. Als je jouw controller bekijkt is al een basis route naar een index.html.twig aangemaakt.
php<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class BookController extends AbstractController { #[Route('/book', name: 'app_book')] public function index(): Response { return $this->render('book/index.html.twig', [ 'controller_name' => 'BookController', ]); } }
Een basis Controller nadat Symfony deze aangemaakt heeft.
Hoe noem je jouw controller?
Omdat Symfony veel vrijheid geeft, kun je een Controller noemen wat je wilt. De echte vraag is: wat doet jouw Controller?
Vaak hebben Entities (Models) hun eigen controller, zeker als er CRUD-operaties uitgevoerd moeten worden. Alle functies (methoden) van de Entity worden dan in die Controller geplaatst.
Soms maak je ook speciale Controllers die specifiek een rol of functie in je applicatie aanduiden.
Een AdminController kan aangemaakt worden voor alle routes die iemand met een ROLE_ADMIN-rol heeft.
Een SecurityController kan aangemaakt worden voor het afhandelen van beveiligingsopties, bijvoorbeeld login en logout.
Belangrijkste vraag
De belangrijkste vraag bij de naam van een Controller is: wat ga je ermee doen, en is de gekozen naam logisch voor wat er zal gebeuren of wat hij doet? Net zoals je een logische routenaam kiest voor een route, denk hier goed over na vooraf!
Een aantal belangrijke aandachtspunten:
- Een Controller is altijd enkelvoud
- Een Controller is (bijna) altijd een woord met
Controllereraan vastgeplakt. Er zijn uitzonderingen, maar denk hier goed over na! - Een Controller is nooit een afkorting; kies liever een langere bestandsnaam
Meer in MVC-model