Der Controller repräsentiert das “C” im MVC-Pattern und hat deshalb einen sehr hohen Stellenwert im Symfony2 Framework. Im Controller wird ein Großteil der eigentlichen “Flick”-Arbeit zwischen Model und View erledigt. Weitere Informationen kann der interessierte Leser auf der Wikipedia Seite nachlesen.
Controller erstellen
Zu allererst muss der Controller als Datei erstellt werden. Dazu legen wir in dem zuvor erstellten Bundle die Datei “TaskController.php” (/src/Scandio/DaylogBundle/Controller/TaskController.php) an.
Als nächstes befüllen wir die noch leere Datei mit etwas PHP Code:
<?php
// Bundle namespace
namespace Scandio\DaylogBundle\Controller;
// Symfony Framework
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class TaskController extends Controller {
public function indexAction() {}
public function viewAction($taskId) {}
public function addPrepareAction() {}
public function addProcessAction() {}
public function editPrepareAction($taskId) {}
public function editProcessAction($taskId) {}
public function deleteAction($taskId) {}
public function markAsDoneAction($taskId) {}
public function markAsundoneAction($taskId) {}
}
Zur Erläuterung: Zu Beginn der Datei wird der Namespace deklariert, da Symfony2 verstärkt auf PHP5.3 aufsetzt. Als nächstes inkludieren wir wichtige Symfony2 Framework Klassen, die das Arbeiten mit dem Controller sehr stark vereinfacht. Der TaskController extended hierbei vom Symfony2 Controller um z.B. die Service Schnittstelle (näheres dazu später) verwenden zu können.
Der wichtigste Teil folgt nun: Die Actions.
Actions
Das Schema für eine (neue) Action ist:
public function {action_name}Action([{parameter_1}, ...]) { // do stuff; return; }
Der Action Name leitet sich aus der im routing angegebenen Referenz (bsp: ScandioDaylogBundle:Task:index) ab. Anschließend wird nur noch “Action” an den Functionsnamen angehängt und schon kann man über die URL die Action aufrufen.
Symfony2 erkennt durch das gut durchdachte Error- und Exception-Handling wenn z.B. eine Controller Action nicht verfügbar ist oder das Template fehlt (und vieles mehr!). Ich will hier nicht zu viel vorweg nehmen, doch für Symfony2 sind vor allem Exceptions extrem wichtig, so dass sich jeder Leser in seiner Freizeit bereits mit diesen vertraut machen sollte
.
Actions müssen zusätzlich immer ein Response Object (welches von Symfony2 bereits mitgeliefert wird) zurückliefern! Dies bedeutet jedoch nicht, dass man sich in seiner Template und Layout Struktur eingeschränkt fühlen muss. Symfony2 bietet von Anfang an eine ausgereifte Struktur mit der fast jeder Request erfolgreich behandelt werden kann.
Für jetzt hauchen wir der index-Action Leben ein:
public function indexAction() {
return $this->render('ScandioDaylogBundle:Task:index.html.twig');
}
Zusätzlich erstellen wir in /src/Scandio/DaylogBundle/Resources/views/Task/ die Datei index.html.twig. (Nicht vorhandene Ordner bitte erstellen). Diese Datei befüllen wir mit folgendem Stück Template Code:
<h1>Daylog Scandio Symfony2 Tutorial</h1> Dies ist die Task:index Action!
Wenn alles richtig gemacht wurde, erscheint folgender Text beim Aufruf dieser URL (http://daylog.local/app_dev.php/daylog): “Dies ist die Task:index Action!”.
Wie man sieht ist es extrem einfach mit Symfony2 Actions zu erstellen!
Views und Twig
Die View die wir gerade ohne weitere Erklärung erstellt haben ist ein weiterer wichtiger Teil des Frameworks, der nicht ohne weiteres übergangen werden darf. Um das Thema Views und die Template Engine Twig kümmern wir uns in einem der nächsten Artikel.

Hallo,
die Datei “TaskController.php” gehört nicht nach (/src/Scandio/DaylogBundle/TaskController.php) sondern nach (/src/Scandio/DaylogBundle/Controller/TaskController.php)
Hallo Herr Gnedler,
vielen Dank für den Hinweis! Der Eintrag wurde berichtigt.
Mit freundlichen Grüßen,
Veit Osiander
Hallo Herr Osiander,
vielen Dank für die schnelle Korrektur.
Wann kann man denn mit dem nächsten Teil des Tutorial rechnen?
Hallo Herr Gnedler,
am nächsten Teil wird mit Hochdruck gearbeitet und in den nächste Tagen erscheinen.
Mit freundlichen Grüßen,
Veit Osiander
Schade, dass bisher kein weiterer Teil gefolgt ist. Das ist bisher das einzige gescheite Tutorial gewesen, das ich gefunden habe
Da steckt so viel Hochdruck in der Arbeit des nächsten Artikels, dass wohl das Ganze explodiert ist.
Sehr schade.
Schade, das stimmt. Es ist auch nicht der fehlende Wille, sondern die Kundenprojekte, die bei uns vorgehen. Aber wir versprechen Besserung.
Danke für Teil 4 http://www.scandio.de/2012/02/symfony2-web-applikationen-erstellen-teil-4-update-auf-2-0-9-und-viewstwig/