Samstag, 10. Januar 2009


Artikel

September 2007 | Artikel

Kuchen backen! Fortsetzung, Teil 2

(Link zum Artikel: http://www.entwickler.com/php//001294)
Teil 1   Teil 2   Teil 3   Teil 4   Teil 5   

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:

  1. <Directory /var/www/cake/>
  2. Options FollowSymLinks
  3. AllowOverride All
  4. </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). 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:
  1. CREATE TABLE 'feeds' (
  2. 'id' int(11) NOT NULL auto_increment,
  3. 'name' varchar(255),
  4. 'link' text,
  5. 'description' text,
  6. 'modified' datetime,
  7. PRIMARY KEY ('id')
  8. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  9. CREATE TABLE 'feed_items' (
  10. 'id' int(11) NOT NULL auto_increment,
  11. 'feed_id' int(11) NOT NULL,
  12. 'title' text,
  13. 'content' text,
  14. 'link' text NOT NULL,
  15. 'created' datetime,
  16. PRIMARY KEY ('id')
  17. ) 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!
  1. http://www.cakephp.org
  2. http://bakery.cakephp.org
  3. http://pear.php.net/manual/de/package.xml.xml-rss.php
  4. http://bakery.cakephp.org/categories/view/4
  5. http://groups.google.ch/group/cake-php/web/cake-apps-sites-in-the-wild
  6. http://www.cakefoundation.org/pages/certification

Teil 1   Teil 2   Teil 3   Teil 4   Teil 5   

Kommentare

Gravatar rtauchnitz 17.09.2007
um 21:40 Uhr
Der Artikel ist ziemlich gut, aber kann es sein, dass die im Artikel benannten externen Links (z.B. [6]) nirgendwo ausgeschrieben sind? #zitieren
Gravatar Robert 18.09.2007
um 11:38 Uhr
Stimmt, da hatte unser CMS sich ein wenig an den Links "verschluckt". Die Links sollten jetzt aber jeweils am Ende der Seite angezeigt werden. An der Möglichkeit, die Links direkt (und automatisch) im Text einzubinden arbeiten wir bereits. Schöne Grüße,
Robert
#zitieren