Apache korrekt
konfigurieren
Einen weiteren möglichen Fehler erkennen wir dann, wenn die
HTML-Seite ohne jegliche CSS-Formatierung angezeigt wird. Das Modul
mod_rewrite muss geladen sein und in httpd.conf
muss
folgender Eintrag stehen:
<Directory /var/www/cake/>
Options FollowSymLinks
AllowOverride All
</Directory>
Durch
AllowOverride All wird die Datei
.htaccess
von
Apache interpretiert.
Ein kleines
Projekt – das Modell
Jetzt sind wir bereit, eine erste Applikation mit CakePHP zu
erstellen. Wir bauen eine einfache Applikation, die RSS-Feeds
speichert. Dazu brauchen wir zwei einfache Tabellen, eine, die die
Feed-Quelle speichert, sowie eine weitere, die die einzelnen
Einträge
enthält (siehe Abbildung 2).

Abb. 2: Einfaches DB-Modell für unser Beispiel
Beachten wir folgende CakePHP-Besonderheiten: jede der Tabellen muss
ein Feld mit Namen
id haben, zudem können
DateTime-Felder
mit Namen
created, modified oder
updated
definiert
werden. CakePHP wird sich, wenn er sie vorfindet, automatisch um ihre
Aktualisierung kümmern.
Die Tabellendefinitionen, als ausführbares SQL-Script
für
die Datenbank MySQL, stehen in Listing 2:
CREATE TABLE 'feeds' (
'id' int(11) NOT NULL auto_increment,
'name' varchar(255),
'link' text,
'description' text,
'modified' datetime,
PRIMARY KEY ('id')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE 'feed_items' (
'id' int(11) NOT NULL auto_increment,
'feed_id' int(11) NOT NULL,
'title' text,
'content' text,
'link' text NOT NULL,
'created' datetime,
PRIMARY KEY ('id')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Kuchen backen mit
bake
Mit dieser rudimentären Tabellenstruktur ausgerüstet,
lassen wir jetzt CakePHP für uns arbeiten! Das Utility
/cake/scripts/bake.php ist ein
PHP-Kommandozeilenskript, das
im Dialogverfahren alle für einen ersten Start
benötigten
Dateien generiert und in die passende Verzeichnisse schreibt. Unter
Unix muss er mit
chmod 755 ausführbar
gemacht werden,
bevor es losgehen kann.
Der Startbildschirm begrüßt uns und fragt, ob wir
Model,
Controller oder View generiert haben wollen. Ganz zu Beginn macht es
Sinn, mit dem Modell zu beginnen. Bake ist dabei ein Tool, das
iterativ aufgerufen werden muss, denn jede Session behandelt nur
einen Teilaspekt unserer Applikation. Sehr nützlich ist dies
auch, wenn die Entwicklung schon weiter fortgeschritten ist,
beispielsweise um eine erste View für eine neu kreierte Aktion
im Controller zu generieren.
Bake mit allen seinen Möglichkeiten hier vorzustellen,
würde
den Rahmen einer Einführung sprengen. Wer sich dafür
interessiert, soll ruhig ein paar Dutzend Probeläufe machen
und
sich den generierten Code in einem Editor anschauen. Hat man eine
fehlerhafte Eingabe gemacht, kann und muss abgebrochen und wieder von
vorne begonnen werden. Die Dialogführung ist hier leider
äußerst
rudimentär und die generierten Dateien werden dabei jeweils
überschrieben. Arbeitet man an bereits bestehenden und
abgeänderten Code, ist dies als Gebot zu verstehen, dass man
seine Arbeit vor dem Backen sichert!