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 FollowSymLinksAllowOverride All</Directory>
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).
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 ;
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!





