|
|
@@ -1,46 +1,46 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<!-- EN-Revision: 21819 -->
|
|
|
-<!-- Reviewed: no -->
|
|
|
+<!-- Reviewed: 21819 -->
|
|
|
<sect1 id="learning.quickstart.create-model">
|
|
|
- <title>Ein Modell und eine Datenbank Tabelle erstellen</title>
|
|
|
+ <title>Ein Modell und eine Datenbanktabelle erstellen</title>
|
|
|
|
|
|
<para>
|
|
|
- Bevor wir anfangen nehmen wie etwas an: Wo werden diese Klassen leben, und wie werden wir
|
|
|
- Sie finden? Das Standardprojekt welches wir erstellt haben instanziert einen Autoloader. Wir
|
|
|
- können Ihm andere Autoloader anhängen damit er weiss wo andere Klassen zu finden sind.
|
|
|
- Typischerweise wollen wir das unsere verschiedenen MVC Klassen im selben Baum gruppiert sind
|
|
|
- -- in diesem Fall <filename>application/</filename> -- und meistens einen gemeinsamen Präfix
|
|
|
+ Bevor wir anfangen, wollen wir uns überlegen: Wo werden diese Klassen leben, und wie werden wir
|
|
|
+ sie finden? Das Standardprojekt, welches wir erstellt haben, instanziert einen Autoloader. Wir
|
|
|
+ können ihm andere Autoloader anhängen, damit er weiss, wo andere Klassen zu finden sind.
|
|
|
+ Typischerweise wollen wir, dass unsere verschiedenen MVC Klassen im selben Baum gruppiert sind
|
|
|
+ -- in diesem Fall <filename>application/</filename> -- und meistens ein gemeinsames Präfix
|
|
|
verwenden.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- <classname>Zend_Controller_Front</classname> hat den Begriff von "Modulen", welche
|
|
|
- individuelle Mini-Anwendungen sind. Module mimen die Verzeichnisstruktur welche das
|
|
|
- <command>zf</command> Tool unter <filename>application/</filename> einrichtet, und von allen
|
|
|
- Klassen in Ihm wird angenommen das Sie mit einen gemeinsamen Präfix beginnen, dem Namen des
|
|
|
+ <classname>Zend_Controller_Front</classname> kennt den Begriff von "Modulen", welche
|
|
|
+ individuelle Mini-Anwendungen sind. Module mimen die Verzeichnisstruktur, welche das
|
|
|
+ <command>zf</command>-Tool unter <filename>application/</filename> einrichtet, und von allen
|
|
|
+ Klassen darin wird angenommen, dass sie mit einen gemeinsamen Präfix beginnen, dem Namen des
|
|
|
Moduls. <filename>application/</filename> selbst ist ein Modul -- das "default" oder
|
|
|
"application" Modul. Als solches richten wir das Autoloading für Ressourcen in diesem
|
|
|
Verzeichnis ein.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- <classname>Zend_Application_Module_Autoloader</classname> bietet die Funktionalität welche
|
|
|
- benötigt wird um die verschiedenen Ressourcen unter einem Modul mit den richtigen
|
|
|
+ <classname>Zend_Application_Module_Autoloader</classname> bietet die Funktionalität, welche
|
|
|
+ benötigt wird, um die verschiedenen Ressourcen unter einem Modul mit den richtigen
|
|
|
Verzeichnissen zu verbinden, und auch einen standardmäßigen Namensmechanismus. Standardmäßig
|
|
|
- wird eine Instanz der Klasse wärend der Initialisierung des Bootstrap Objekts erstellt;
|
|
|
+ wird eine Instanz der Klasse wärend der Initialisierung des Bootstrap-Objekts erstellt;
|
|
|
unser Application Bootstrap verwendet standardmäßig das Modulpräfix "Application". Daher
|
|
|
beginnen alle unsere Modelle, Formulare, und Tabellenklassen mit dem Klassenpräfix
|
|
|
"Application_".
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Nehmen wir jetzt also an was ein Guestbook ausmacht. Typischerweise sind Sie einfach eine
|
|
|
- Liste ein Einträgen mit einem <emphasis>Kommentar</emphasis> (comment), einem
|
|
|
- <emphasis>Zeitpunkt</emphasis> (timestamp) und oft einer <emphasis>Email Adresse</emphasis>.
|
|
|
+ Überlegen wir uns nun, was ein Guestbook ausmacht. Typischerweise ist das einfach eine
|
|
|
+ Liste von Einträgen mit einem <emphasis>Kommentar</emphasis> (comment), einem
|
|
|
+ <emphasis>Zeitpunkt</emphasis> (timestamp) und oft einer <emphasis>Email-Adresse</emphasis>.
|
|
|
Angenommen wir speichern diese in einer Datenbank, dann wollen wir auch einen
|
|
|
<emphasis>eindeutigen Identifikator</emphasis> für jeden Eintrag. Wir wollen in der Lage
|
|
|
- sein einen Eintrag zu speichern, individuelle Einträge zu holen, und alle Einträge zu
|
|
|
- empfangen. Als solches könnte das Modell einer einfachen Guestbook <acronym>API</acronym>
|
|
|
+ sein, einen Eintrag zu speichern, individuelle Einträge zu holen, und alle Einträge zu
|
|
|
+ empfangen. Als solches könnte das Modell einer einfachen Guestbook-<acronym>API</acronym>
|
|
|
wie folgt aussehen:
|
|
|
</para>
|
|
|
|
|
|
@@ -81,12 +81,12 @@ class Application_Model_GuestbookMapper
|
|
|
<para>
|
|
|
<methodname>__get()</methodname> und <methodname>__set()</methodname> bieten uns bequeme
|
|
|
Mechanismen an um auf individuelle Eigenschaften von Einträgen zuzugreifen und auf andere
|
|
|
- Getter und Setter zu verweisen. Sie stellen auch sicher das nur Eigenschaften im Objekt
|
|
|
- vorhanden sind die wir freigegeben haben.
|
|
|
+ Getter und Setter zu verweisen. Sie stellen auch sicher, dass nur Eigenschaften im Objekt
|
|
|
+ vorhanden sind, die wir freigegeben haben.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- <methodname>find()</methodname> und <methodname>fetchAll()</methodname> bieten die Fähigkeit
|
|
|
+ <methodname>find()</methodname> und <methodname>fetchAll()</methodname> bieten die Fähigkeit,
|
|
|
einen einzelnen Eintrag oder alle Einträge zu holen, wärend <methodname>save()</methodname>
|
|
|
das Speichern der Einträge im Datenspeicher übernimmt.
|
|
|
</para>
|
|
|
@@ -96,34 +96,34 @@ class Application_Model_GuestbookMapper
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Zuerst muss unsere <classname>Db</classname> Ressource initialisiert werden. Wie bei der
|
|
|
+ Zuerst muss unsere <classname>Db</classname>-Ressource initialisiert werden. Wie bei
|
|
|
<classname>Layout</classname> und <classname>View</classname> kann die Konfiguration für die
|
|
|
- <classname>Db</classname> Ressource angegeben werden. Dies kann mit dem Befehl
|
|
|
+ <classname>Db</classname>-Ressource angegeben werden. Dies kann mit dem Befehl
|
|
|
<command>zf configure db-adapter</command> getan werden:
|
|
|
</para>
|
|
|
|
|
|
- <programlisting language="shell"><![CDATA[
|
|
|
-% zf configure db-adapter \
|
|
|
-> 'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook.db"' \
|
|
|
-> production
|
|
|
-A db configuration for the production has been written to the application config file.
|
|
|
-
|
|
|
-% zf configure db-adapter \
|
|
|
-> 'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook-testing.db"' \
|
|
|
-> testing
|
|
|
-A db configuration for the production has been written to the application config file.
|
|
|
-
|
|
|
-% zf configure db-adapter \
|
|
|
-> 'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook-dev.db"' \
|
|
|
-> development
|
|
|
-A db configuration for the production has been written to the application config file.
|
|
|
-]]></programlisting>
|
|
|
-
|
|
|
+ <programlisting language="shell"><![CDATA[
|
|
|
+% zf configure db-adapter \
|
|
|
+> 'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook.db"' \
|
|
|
+> production
|
|
|
+A db configuration for the production has been written to the application config file.
|
|
|
+
|
|
|
+% zf configure db-adapter \
|
|
|
+> 'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook-testing.db"' \
|
|
|
+> testing
|
|
|
+A db configuration for the production has been written to the application config file.
|
|
|
+
|
|
|
+% zf configure db-adapter \
|
|
|
+> 'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/guestbook-dev.db"' \
|
|
|
+> development
|
|
|
+A db configuration for the production has been written to the application config file.
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
<para>
|
|
|
Jetzt muss die Datei <filename>application/configs/application.ini</filename> bearbeitet
|
|
|
- werden, und man kann sehen das die folgenden Zeilen in den betreffenden Abschnitten
|
|
|
+ werden, und man kann sehen, dass die folgenden Zeilen in den betreffenden Abschnitten
|
|
|
hinzugefügt wurden.
|
|
|
- </para>
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting language="ini"><![CDATA[
|
|
|
; application/configs/application.ini
|
|
|
@@ -134,12 +134,12 @@ resources.db.adapter = "PDO_SQLITE"
|
|
|
resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook.db"
|
|
|
|
|
|
[testing : production]
|
|
|
-; ...
|
|
|
+; ...
|
|
|
resources.db.adapter = "PDO_SQLITE"
|
|
|
resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook-testing.db"
|
|
|
|
|
|
[development : production]
|
|
|
-; ...
|
|
|
+; ...
|
|
|
resources.db.adapter = "PDO_SQLITE"
|
|
|
resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook-dev.db"
|
|
|
]]></programlisting>
|
|
|
@@ -180,7 +180,7 @@ resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook-dev.db"
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Es ist zu beachten das die Datenbank(en) unter <filename>data/db/</filename> gespeichert
|
|
|
+ Es ist zu beachten, dass die Datenbank(en) unter <filename>data/db/</filename> gespeichert
|
|
|
wird. Diese Verzeichnisse sind zu erstellen und weltweit-schreibbar zu machen. Auf
|
|
|
Unix-artigen Systemen kann man das wie folgt durchführen:
|
|
|
</para>
|
|
|
@@ -190,14 +190,14 @@ resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook-dev.db"
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Unter Windows muss man die Verzeichnisse im Explorer erstellen und die Zugriffsrechte so zu
|
|
|
- setzen das jeder in das Verzeichnis schreiben darf.
|
|
|
+ Unter Windows muss man die Verzeichnisse im Explorer erstellen und die Zugriffsrechte so
|
|
|
+ setzen, dass jeder in das Verzeichnis schreiben darf.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
Ab diesem Punkt haben wir eine Verbindung zu einer Datenbank; in unserem Fall ist es eine
|
|
|
- verbindung zu einer Sqlite Datenbank die in unserem <filename>application/data/</filename>
|
|
|
- Verzeichnis ist. Designen wir also eine einfache Tabelle die unsere Guestbook Einträge
|
|
|
+ Verbindung zu einer Sqlite-Datenbank, die in unserem <filename>application/data/</filename>
|
|
|
+ Verzeichnis ist. Erstellen wir also eine einfache Tabelle, die unsere Guestbook-Einträge
|
|
|
enthalten wird.
|
|
|
</para>
|
|
|
|
|
|
@@ -217,14 +217,14 @@ CREATE INDEX "id" ON "guestbook" ("id");
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Und damit wir gleich einige Arbeitsdaten haben, erstellen wir ein paar Zeilen an Information
|
|
|
+ Und damit wir gleich einige Arbeitsdaten haben, fügen wir ein paar Zeilen ein,
|
|
|
um unsere Anwendung interessant zu machen.
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="sql"><![CDATA[
|
|
|
-- scripts/data.sqlite.sql
|
|
|
--
|
|
|
--- Man kann damit beginnen die Datenbank zu befüllen indem die folgenden SQL
|
|
|
+-- Man kann damit beginnen die Datenbank zu befüllen, indem die folgenden SQL
|
|
|
-- Anweisungen ausgeführt werden.
|
|
|
|
|
|
INSERT INTO guestbook (email, comment, created) VALUES
|
|
|
@@ -239,9 +239,9 @@ INSERT INTO guestbook (email, comment, created) VALUES
|
|
|
|
|
|
<para>
|
|
|
Jetzt haben wir sowohl das Schema als auch einige Daten definiert. Schreiben wir also ein
|
|
|
- Skript das wir jetzt ausführen können um diese Datenbank zu erstellen. Natürlich wird das
|
|
|
+ Skript, das wir jetzt ausführen können, um diese Datenbank zu erstellen. Natürlich wird das
|
|
|
nicht in der Produktion benötigt, aber dieses Skriupt hilft Entwicklern die Notwendigkeiten
|
|
|
- der Datenbank lokal zu erstellen damit Sie eine voll funktionsfähige Anwendung haben. Das
|
|
|
+ der Datenbank lokal zu erstellen, damit sie eine voll funktionsfähige Anwendung haben. Das
|
|
|
Skript ist als <filename>scripts/load.sqlite.php</filename> mit dem folgenden Inhalt zu
|
|
|
erstellen:
|
|
|
</para>
|
|
|
@@ -250,7 +250,7 @@ INSERT INTO guestbook (email, comment, created) VALUES
|
|
|
// scripts/load.sqlite.php
|
|
|
|
|
|
/**
|
|
|
- * Skript für das erstellen und Laden der Datenbank
|
|
|
+ * Skript für das Erstellen und Laden der Datenbank
|
|
|
*/
|
|
|
|
|
|
// Initialisiert den Pfad und das Autoloading der Anwendung
|
|
|
@@ -284,7 +284,7 @@ if ($getopt->getOption('h')) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-// Werte basierend auf Ihrer Anwesenheit oder Abwesenheit von CLI Optionen initialisieren
|
|
|
+// Werte basierend auf ihrer Anwesenheit oder Abwesenheit von CLI Optionen initialisieren
|
|
|
$withData = $getopt->getOption('w');
|
|
|
$env = $getopt->getOption('e');
|
|
|
defined('APPLICATION_ENV')
|
|
|
@@ -310,7 +310,7 @@ if ('testing' != APPLICATION_ENV) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// Prüfen um zu sehen ob wie bereits eine Datenbankdatei haben
|
|
|
+// Prüfen um zu sehen ob wir bereits eine Datenbankdatei haben
|
|
|
$options = $bootstrap->getOption('resources');
|
|
|
$dbFile = $options['db']['params']['dbname'];
|
|
|
if (file_exists($dbFile)) {
|
|
|
@@ -347,7 +347,7 @@ try {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
-// Generell gesprochen wird dieses Skript von der Kommandozeile aus aufgerufen
|
|
|
+// dieses Skript von der Kommandozeile aus aufgerufen
|
|
|
return true;
|
|
|
]]></programlisting>
|
|
|
|
|
|
@@ -375,37 +375,37 @@ Daten geladen.
|
|
|
<para>
|
|
|
Jetzt haben wir eine voll funktionsfähige Datenbank und eine Tabelle für unsere Guestbook
|
|
|
Anwendung. Unsere nächsten paar Schritte sind die Ausarbeitung unseres Anwendungscodes. Das
|
|
|
- inkludiert das Bauen einer Datenquelle (in unserem Fall verwenden wir
|
|
|
+ schliesst das Bauen einer Datenquelle (in unserem Fall verwenden wir
|
|
|
<classname>Zend_Db_Table</classname>), und einen Daten Mapper um diese Datenquelle mit
|
|
|
- unserem Domain Modell zu verbinden. Letztendlich erstellen wir den Controller der mit diesem
|
|
|
- Modell interagiert damit sowohl existierende Einträge angezeigt als auch neue Einträge
|
|
|
+ unserem Domain Modell zu verbinden, ein. Letztendlich erstellen wir den Controller, der mit diesem
|
|
|
+ Modell interagiert, damit sowohl existierende Einträge angezeigt als auch neue Einträge
|
|
|
bearbeitet werden.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
Wir verwenden ein <ulink
|
|
|
url="http://martinfowler.com/eaaCatalog/tableDataGateway.html">Table Data
|
|
|
- Gateway</ulink> um uns mit unserer Datenquelle zu verbinden;
|
|
|
+ Gateway</ulink>, um uns mit unserer Datenquelle zu verbinden;
|
|
|
<classname>Zend_Db_Table</classname> bietet diese Funktionalität. Um anzufangen erstellen
|
|
|
wir eine <classname>Zend_Db_Table</classname>-basierende Tabellenklasse. Wie wir es für
|
|
|
- Layouts und den Datenbank Adapter getan haben, können wir das <command>zf</command> Tool
|
|
|
- verwenden um uns zu assistieren indem der Befehl <command>create db-table</command>
|
|
|
- verwendet wird. Dieser nimmt mindestens zwei Argumente, den Namen mit dem man auf die Klasse
|
|
|
- referenzieren will, und die Datenbanktabelle auf die Sie zeigt.
|
|
|
+ Layouts und den Datenbankadapter getan haben, können wir das <command>zf</command> Tool
|
|
|
+ verwenden um uns zu assistieren, indem der Befehl <command>create db-table</command>
|
|
|
+ verwendet wird. Dieser benötigt mindestens zwei Argumente, den Namen, mit dem man auf die
|
|
|
+ Klasse referenzieren will, und die Datenbanktabelle auf die sie zeigt.
|
|
|
</para>
|
|
|
|
|
|
- <programlisting language="shell"><![CDATA[
|
|
|
-% zf create db-table Guestbook guestbook
|
|
|
-Creating a DbTable at application/models/DbTable/Guestbook.php
|
|
|
-Updating project profile 'zfproject.xml'
|
|
|
-]]></programlisting>
|
|
|
-
|
|
|
+ <programlisting language="shell"><![CDATA[
|
|
|
+% zf create db-table Guestbook guestbook
|
|
|
+Creating a DbTable at application/models/DbTable/Guestbook.php
|
|
|
+Updating project profile 'zfproject.xml'
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
<para>
|
|
|
- Wenn man in der Verzeichnisbaum sieht, dann wird man jetzt sehen das ein neues Verzeichnis
|
|
|
+ Wenn man den Verzeichnisbaum ansieht, dann wird man feststellen, dass ein neues Verzeichnis
|
|
|
<filename>application/models/DbTable/</filename> zusammen mit der Datei
|
|
|
- <filename>Guestbook.php</filename> erstellt wurde. Wenn man die Datei öffnet wird man den
|
|
|
- folgenden Inhalt sehen:
|
|
|
- </para>
|
|
|
+ <filename>Guestbook.php</filename> erstellt wurde. Wenn man die Datei öffnet, wird man den
|
|
|
+ folgenden Inhalt sehen:
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
// application/models/DbTable/Guestbook.php
|
|
|
@@ -421,25 +421,25 @@ class Application_Model_DbTable_Guestbook extends Zend_Db_Table_Abstract
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Der Klassenpräfix ist zu beachten: <classname>Application_Model_DbTable</classname>. Der
|
|
|
+ Das Klassenpräfix ist zu beachten: <classname>Application_Model_DbTable</classname>. Das
|
|
|
Klassenpräfix für unser Modul "Application" ist das erste Segment, und dann haben wir die
|
|
|
Komponente "Model_DbTable"; die letztere verweist auf das Verzeichnis
|
|
|
<filename>models/DbTable/</filename> des Moduls.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Alles das ist wirklich notwendig wenn <classname>Zend_Db_Table</classname> erweitert wird
|
|
|
+ Alles das ist wirklich notwendig, wenn <classname>Zend_Db_Table</classname> erweitert wird
|
|
|
um einen Tabellennamen anzubieten und optional den primären Schlüssel (wenn es nicht die
|
|
|
"id" ist).
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
Jetzt erstellen wir einen <ulink
|
|
|
- url="http://martinfowler.com/eaaCatalog/dataMapper.html">Daten Mapper</ulink>. Ein
|
|
|
- <emphasis>Daten Mapper</emphasis> bildet ein Domain Objekt in der Datenbank ab. In unserem
|
|
|
+ url="http://martinfowler.com/eaaCatalog/dataMapper.html">Data Mapper</ulink>. Ein
|
|
|
+ <emphasis>Data Mapper</emphasis> bildet ein Domain Objekt in der Datenbank ab. In unserem
|
|
|
Fall bildet es unser Modell <classname>Application_Model_Guestbook</classname> auf unsere
|
|
|
Datenquelle, <classname>Application_Model_DbTable_Guestbook</classname>, ab. Eine typische
|
|
|
- <acronym>API</acronym> für einen Daten Mapper ist wie folgt:
|
|
|
+ <acronym>API</acronym> für einen Data Mapper ist wie folgt:
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -454,22 +454,22 @@ class Application_Model_GuestbookMapper
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Zusätzlich zu diesen Methoden, fügen wir Methoden für das Setzen und Holen des Table Data
|
|
|
- Gateways hinzu. Um die initiale Klasse zu erstellen kann das <command>zf</command> CLI
|
|
|
+ Zusätzlich zu diesen Methoden fügen wir Methoden für das Setzen und Holen des Table Data
|
|
|
+ Gateways hinzu. Um die initiale Klasse zu erstellen, kann das <command>zf</command> CLI
|
|
|
Tool verwendet werden:
|
|
|
</para>
|
|
|
|
|
|
- <programlisting language="shell"><![CDATA[
|
|
|
-% zf create model GuestbookMapper
|
|
|
-Creating a model at application/models/GuestbookMapper.php
|
|
|
-Updating project profile '.zfproject.xml'
|
|
|
-]]></programlisting>
|
|
|
-
|
|
|
+ <programlisting language="shell"><![CDATA[
|
|
|
+% zf create model GuestbookMapper
|
|
|
+Creating a model at application/models/GuestbookMapper.php
|
|
|
+Updating project profile '.zfproject.xml'
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
<para>
|
|
|
- Jetzt muss die Klasse <classname>Application_Model_GuestbookMapper</classname> welche in
|
|
|
- <filename>application/models/GuestbookMapper.php</filename> gefunden werden kann so
|
|
|
- geändert werden dass Sie wie folgt zu lesen ist:
|
|
|
- </para>
|
|
|
+ Jetzt muss die Klasse <classname>Application_Model_GuestbookMapper</classname>, welche in
|
|
|
+ <filename>application/models/GuestbookMapper.php</filename> zu finden ist, so
|
|
|
+ geändert werden, dass sie wie folgt aussieht:
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
// application/models/GuestbookMapper.php
|
|
|
@@ -545,20 +545,20 @@ class Application_Model_GuestbookMapper
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Jetzt ist es Zeit unsere Modellklasse zu erstellen. Wir machen dies indem wieder das
|
|
|
+ Jetzt ist es Zeit unsere Modellklasse zu erstellen. Wir machen dies, indem wieder das
|
|
|
Kommando <command>zf create model</command> verwendet wird:
|
|
|
</para>
|
|
|
|
|
|
- <programlisting language="shell"><![CDATA[
|
|
|
-% zf create model Guestbook
|
|
|
-Creating a model at application/models/Guestbook.php
|
|
|
-Updating project profile '.zfproject.xml'
|
|
|
-]]></programlisting>
|
|
|
-
|
|
|
+ <programlisting language="shell"><![CDATA[
|
|
|
+% zf create model Guestbook
|
|
|
+Creating a model at application/models/Guestbook.php
|
|
|
+Updating project profile '.zfproject.xml'
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
<para>
|
|
|
- Wir verändern diese leere <acronym>PHP</acronym> Klasse um es einfach zu machen das Modell
|
|
|
- bekanntzugeben indem ein Array an Daten entweder an den Constructor oder an die
|
|
|
- <methodname>setOptions()</methodname> Methode übergeben wird. Das endgültige Modell, welches
|
|
|
+ Wir verändern diese leere <acronym>PHP</acronym>-Klasse, um das Model einfach mit Daten
|
|
|
+ zu füllen, indem ein Array an Daten entweder an den Constructor oder an die
|
|
|
+ Methode <methodname>setOptions()</methodname> übergeben wird. Das endgültige Modell, welches
|
|
|
in <filename>application/models/Guestbook.php</filename> ist, sollte wie folgt aussehen:
|
|
|
</para>
|
|
|
|
|
|
@@ -656,24 +656,24 @@ class Application_Model_Guestbook
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Letztendlich, um diese Elemente alle zusammen zu verbinden, erstellen wir einen Guestbook
|
|
|
- Controller der die Einträge auflistet welche aktuell in der Datenbank sind.
|
|
|
+ Um diese Elemente alle zusammen zu verbinden, erstellen wir zuletzt einen
|
|
|
+ Guestbook Controller, der die Einträge auflistet, welche aktuell in der Datenbank sind.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Um einen neuen Controller zu erstellen muss das Kommando
|
|
|
+ Um einen neuen Controller zu erstellen, muss das Kommando
|
|
|
<command>zf create controller</command> verwendet werden:
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="shell"><![CDATA[
|
|
|
-% zf create controller Guestbook
|
|
|
-Creating a controller at
|
|
|
- application/controllers/GuestbookController.php
|
|
|
-Creating an index action method in controller Guestbook
|
|
|
-Creating a view script for the index action method at
|
|
|
- application/views/scripts/guestbook/index.phtml
|
|
|
-Creating a controller test file at
|
|
|
- tests/application/controllers/GuestbookControllerTest.php
|
|
|
+% zf create controller Guestbook
|
|
|
+Creating a controller at
|
|
|
+ application/controllers/GuestbookController.php
|
|
|
+Creating an index action method in controller Guestbook
|
|
|
+Creating a view script for the index action method at
|
|
|
+ application/views/scripts/guestbook/index.phtml
|
|
|
+Creating a controller test file at
|
|
|
+ tests/application/controllers/GuestbookControllerTest.php
|
|
|
Updating project profile '.zfproject.xml'
|
|
|
]]></programlisting>
|
|
|
|
|
|
@@ -686,7 +686,7 @@ Updating project profile '.zfproject.xml'
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Wir verwenden die "index" Aktion als Landeseite um alle Guestbook Einträge anzusehen.
|
|
|
+ Wir verwenden die "index" Aktion als Landeseite, um alle Guestbook Einträge anzusehen.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
@@ -711,7 +711,7 @@ class GuestbookController extends Zend_Controller_Action
|
|
|
<para>
|
|
|
Und natürlich benötigen wir ein View Skript um damit weiterzumachen.
|
|
|
<filename>application/views/scripts/guestbook/index.phtml</filename> ist zu bearbeiten damit
|
|
|
- Sie wie folgt aussieht:
|
|
|
+ sie wie folgt aussieht:
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -749,14 +749,14 @@ Guestbook Einträge: <br />
|
|
|
</note>
|
|
|
|
|
|
<note>
|
|
|
- <title>Das Datenlade Skript verwenden</title>
|
|
|
+ <title>Das Datenlade-Skript verwenden</title>
|
|
|
|
|
|
<para>
|
|
|
- Das Datenlade Skript welches in diesem Kapitel beschrieben wird
|
|
|
- (<filename>scripts/load.sqlite.php</filename>) kann verwendet werden um die Datenbank,
|
|
|
- für jede Umgebung die man definiert hat, zu erstellen sowie Sie mit Beispieldaten zu
|
|
|
- laden. Intern verwendet es <classname>Zend_Console_Getopt</classname>, was es erlaubt
|
|
|
- eine Anzahl von Kommandozeilen Schalter anzubieten. Wenn man den "-h" oder "--help"
|
|
|
+ Das Datenlade-Skript, welches in diesem Kapitel beschrieben wird
|
|
|
+ (<filename>scripts/load.sqlite.php</filename>) kann verwendet werden, um die Datenbank
|
|
|
+ für jede Umgebung zu erstellen, die man definiert hat, sowie sie mit Beispieldaten zu
|
|
|
+ laden. Intern verwendet es <classname>Zend_Console_Getopt</classname>, was es erlaubt,
|
|
|
+ eine Anzahl von Kommandozeilenschalter anzugeben. Wenn man den "-h" oder "--help"
|
|
|
Schalter übergibt, werden die folgenden Optionen angegeben:
|
|
|
</para>
|
|
|
|
|
|
@@ -769,11 +769,11 @@ Usage: load.sqlite.php [ options ]
|
|
|
]]></programlisting>
|
|
|
|
|
|
<para>
|
|
|
- Der "-e" Schalter erlaubt es den Wert zu spezifizieren der für die Konstante
|
|
|
- <constant>APPLICATION_ENV</constant> verwendet wird -- welcher es erlaubt eine SQLite
|
|
|
- Datenbank für jede Umgebung zu erstellen die man definiert. Man sollte sicherstellen
|
|
|
- dass das Skript für die Umgebung gestartet wird welche man für die eigene Anwendung
|
|
|
- ausgewählt hat wenn man in Betrieb geht.
|
|
|
+ Der "-e" Schalter erlaubt es, den Wert anzugeben, der für die Konstante
|
|
|
+ <constant>APPLICATION_ENV</constant> verwendet wird -- welcher es erlaubt, eine SQLite
|
|
|
+ Datenbank für jede Umgebung zu erstellen, die man definiert. Man sollte sicherstellen,
|
|
|
+ dass das Skript für die Umgebung gestartet wird, welche man für die eigene Anwendung
|
|
|
+ ausgewählt hat, wenn man in Betrieb geht.
|
|
|
</para>
|
|
|
</note>
|
|
|
</sect1>
|