MBO-SD : De site voor software developer in het MBO
Controllers in Symfony
Wat is een Controller
Een Controller
is het hart van jouw applicatie. In een Controller worden alle gegevens verwerkt,
staan de routes naar je pagina's en wordt data opgehaald, gecontroleerd en opgeslagen in de database.
Waar nodig kan een Controller ook andere dingen doen zoals het verzenden van een e-mail of data uit een
andere applicatie ophalen (API) of verzenden. Denk bijvoorbeeld aan een connectie met het betaalsysteem van
Mollie (/iDEAL)
Een nieuwe controller aanmaken
Om een controller aan te maken heb je in de basis het symfony commando nodig
symfony console make:controller [ControllerName]
. Je kan de naam van de Controller direct
meegeven, als je dit niet doet zal Symfony om de naam van jouw controller vragen.
# 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!
src/Controller/BookController.php
en een TWIG bestand in
templates/book/index.html.twig
Als je jouw controller bekijkt zal er meteen een basis
route
naar een index.twig.html
gecreeerd zijn.
<?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',
]);
}
}
Controllers worden enkelvoudig geschreven!
Hoe noem je jouw controller?
Door de vrijheid van Symfony kan je een Controller
alle namen van de wereld geven. De vraag is
vooral wat doet!
je Controller.
Veelal hebben Entities (Models)
een eigen controller, zeker als er voor de Entity ook een
CRUD gemaakt moet worden. Alle functies (methods) van de Entity zitten dan in die Controller.
Soms heb je ook speciale Controllers die specifiek iets zeggen over een rol of afhandeling in jouw applicatie.
Een AdminController
kan gemaakt worden voor alle routes die iemand met een rol ROLE_ADMIN
heeft.
Een SecurityController
kan gemaakt worden voor het afhandelen van beveiligingsopties bijvoorbeeld
het inloggen
en uitloggen
.
Belangrijkste vraag
De belangrijkste vraag die bij de naam van een Controller komt kijken is wat ga je er mee doen en is het
kies voor dat wat er gaat gebeuren of wat het doet een logische naam. Net als dat je bij een route een logische route-naam kiest. Denk hier van te voren GOED
over na!
Een aantal belangrijke dingen om mee te nemen:
- Een Controller is altijd enkelvoud
-
Een Controller is (bijna) altijd een woord met
Controller
er aan vast.
Er zijn uitzonderingen, maar denk er goed overna! - Een Controller is nooit een afkorting, maak lievere een langere bestandsnaam