Symfony Framework Tutorial
Moderne Web-Programmierung mit dem Symfony FrameworkIn diesem Tutorial wollen wir die grundlegenden Möglichkeiten des PHP Frameworks "symfony" erläutern.
Symfony ist ein in PHP 5 geschriebenes quelloffenes Web Application Framework welches dem Model View Controller (MVC) Architekturmuster folgt.
Für die Arbeit mit dem Symfony Framework verwenden wir ein Linux Betriebssystem inklusive Apache Webserver mit PHP Integration sowie eine MySQL Datenbank.
Wir gehen davon aus, dass das Symfony Framework heruntergeladen und in
/home/john/workspace/projekt1/lib/vendor ausgepackt vorliegt.
1. Neues Projekt anlegen
Wir legen eine neues Projekt an und zusätzlich gleich ein Frontend.
Symfony erzeugt hierzu die entsprechenden Dateien für die Webseitenansicht.
2. Apache Seite anlegen
Neue Apache Seite für das Projekt einrichten.Datei: /etc/apache2/sites-available/projekt1
Die Seite aktivieren
Damit der Servername projekt1.localhost aufgelöst werden kann sollte man entsprechend den DNS Server oder die hosts Datei konfigurieren!
Symfony sollte jetzt unter [http://projekt1.localhost] erreichbar sein!
3. Ein [Daten]Modell anlegen
Das Datenmodell wird im yaml-Format in der Datei config/doctrine/schema.yml definiert.Zur Verwendung des YAML Dateiformats gilt folgende Regel:
1. Keine Tabulatoren verwenden
2. Mindestens 2 Leerzeichen als Einrückung verwenden
Beispiel aus dem Practial Symphony
Siehe http://www.symfony-project.org/jobeet/1_4/Doctrine/en/03
Die Anweisung actAs: { Timestampable: ~ } erzeugt in der Tabelle die Spalten
Somit wird bei Anlage und bei jeder Änderung des Datensatzes ein Zeitstempel automatisch eingefügt.
Datenbank Verbindungsstring einrichten
Datenbank erzeugen
4. Testdaten
Testdaten können in data/fixtures/ angelegt werden.
Alle Dateien die sich hier befinden, werden später abgearbeitet.
Beispiele gibt es hier: http://www.symfony-project.org/jobeet/1_4/Doctrine/en/03
Nachdem die Testdaten eingegeben wurden, können diese geladen werden mit:
5. Module
Ein einfaches Modul ohne Datenbankanbindung erzeugt man mit:
Will man ein Modul mit Doctrine Zugriff auf eine Tabelle herstellen dann ist folgendes zu tun.
Beispiel:
Tabelle: Tabelle1
Modulname: tab
Es muss jetzt noch eine Route in apps/frontend/config/routeing.yml angelegt werden.
Für den Anfang reicht erst mal eine DoctrineCollection. Siehe 9.Routing.
Jetzt sollte unter http://projekt1.localhost/frontend_dev.php/tab die Tabelle angezeigt werden!
6. Default Layout
Die Datei apps/frontend/templates/layout.php öffnen.Hier wir das default Layout eingestellt.
Wichtig ist die Ausgabe des Contents
Bilder, CSS und JavaScript Dateien packt man am Besten die entsprechenden Unterordner unter web/
- web/css
- web/images
- web/js
7. CSS
In der Datei frontend/config/view.yml können die Texte für die Ausgabe des Titels, Keywords, Language, etc... vorgenommen werden. CSS Dateien die sich im Ordner web/css/ befinden können mit Komma getrennt eingebunden werden.frontend/config/view.yml
Will man CSS Dateien separat für ein Modul einbinden, so muss man unter config/modules/<Modulname>/templates/ eine neue Datei view.yml anlegen. In dieser Datei kann man dann, für die einzelnen Modulausgaben, CSS Dateien einbinden.
Beispiel:
Alternative
8. Wo findet man was?
Jedes Modul hat im Ordner apps/frontend/modules einen entsprechenden Unterordner für das angelegt Modul.Modulname
|_ actions CONTROLLER
-> actions.class.php
|_ lib Zuästzliche Klassen, z.B. für Formulare
|_ templates VIEWS
-> _form.php
-> editSuccess.php
-> indexSuccess.php
-> newSuccess.php
-> showSuccess.php
Die YAML Konfigurationsdateien befinden sich in apps/frontend/config/*.yml
rouing.yml ist für das URL Rewrite.
view.yml ist für das Einbinden von CSS, JS und das befüllen der Slots.
security.yml wird später dazu verwendet, zu steuern welche Seiten einen Login benötigen.
Das Standard Layout des Projekts ist in der Datei apps/frontend/templates/layout.php hinterlegt.
9. Routing
Im Prinzip sollte ist es immer eine gute Vorgehensweise, eine neue Seite mit einem Routing zu beginnen
Beispiel:
In dem oben gezeigten Beispiel wird eine Route angelegt mit Namen "modul_new_user". Diese Route startet die Action "newUser" aus dem Module "mod1"
Einen Link auf diese Route setzt man in einem Template Beispielsweise so:
