Erstellen der ersten Yii-Anwendung

Um einen ersten Eindruck von Yii zu bekommen, demonstrieren wir zunächst, wie man mit yiic (einem Kommandozeilenbefehl) eine Anwendung erstellt und mit Gii (einem mächtigen, webbasierten Codegenerator) automatisch verschiedene Codeteile generieren kann. Das Installationsverzeichnis von Yii nennen wir im folgenden YiiVerzeichnis, das Webverzeichnis entsprechend WebVerzeichnis.

Starten Sie yiic von der Kommandozeile wie folgt:



Hinweis: Wenn Sie yiic unter Mac OS, Linux or Unix starten, müssen Sie evtl. die Zugriffsrechte der yiic-Datei auf ausführbar setzen. Alternativ können sie den Befehl auch wie folgt aufrufen:


Damit wird im Verzeichnis WebVerzeichnis/testdrive die Grundstruktur einer Anwendung angelegt. Diese Verzeichnisstruktur wird von fast allen Yii-Anwendungen benötigt.

Bereits jetzt kann man die erzeugte Anwendung aufrufen. Und das, ohne auch nur eine einzige Zeile Code geschrieben zu haben. Geben Sie dazu diese URL im Browser ein:



Wie Sie sehen, besteht die Anwendung aus vier Seiten: Der Startseite, der About-Seite, der Kontakt- sowie der Anmeldeseite. Die Kontaktseite enthält ein Kontaktformular für Anfragen an den Webmaster. Über die Anmeldeseite können Besucher sich einloggen, um auch geschützte Inhalte zu erreichen. Weitere Details sehen Sie auf diesen Screenshots:

Startseite

Startseite

Kontaktseite

Kontaktseite

Kontaktseite mit Eingabefehlern

Kontaktseite mit Eingabefehlern

Kontaktseite im Erfolgsfall

Kontaktseite im Erfolgsfall

Anmeldeseite

Anmeldeseite

Das folgende Diagramm zeigt die Verzeichnisstruktur der Testanwendung. Weitere Erläuterungen dazu finden Sie in den Konventionen.



Der oben beschriebene Kommandozeilenbefehl kann zusätzlich auch Dateien erstellen, die vom Versionskontrollsystem GIT benötigt werden. Der folgende Befehl erzeugt die nötigen Dateien, wie zum Beispiel .gitignore (um den Inhalt der asset- und runtime-Ordner von der Versionskontrolle auszuschließen) und .gitkeep (um leere, aber notwendige Ordner mit in die Versionskontrolle aufzunehmen):



Unterstützung für das Versionskontrollsystem Mercurial wurde in Version 1.1.11 hinzugefügt. Ersetzen Sie dafür im oben stehenden Komandozeilenbefehl das git durch hg, wenn Sie Mercurial benutzen.

Verbindung zu einer Datenbank

Da die meisten Webanwendungen mit einer Datenbank zusammenarbeiten, soll auch unsere Testanwendung hier keine Ausnahmen bilden. Die dazu nötigen Informationen werden in der Konfigurationsdatei in WebVerzeichnis/testdrive/protected/config/main.php angegeben:



Damit wird Yii angewiesen, sich bei Bedarf mit der SQLite-Datenbank WebVerzeichnis/testdrive/protected/data/testdrive.db zu verbinden. Beachten Sie, dass die SQLite-Datenbank bereits in der Beispielanwendung enthalten ist, die Sie gerade erstellt haben. Die Datenbank enthält nur die Tabelle tbl_user:



Falls Sie stattdessen eine MySQL-Datenbank einsetzen möchten, können Sie die Schemadatei WebVerzeichnis/testdrive/protected/data/schema.mysql.sql verwenden, um die Datenbank anzulegen.

Hinweis: Yii benötigt die PDO-Erweiterung in PHP inklusive der datenbankspezifischen PDO-Treiber, um auf eine Datenbank zugreifen zu können. Für die Testanwendung müssen also php_pdo und php_pdo_sqlite aktiviert sein.

Erstellen von CRUD-Operationen

Kommen wir nun zum angenehmen Teil: Wir möchten CRUD-Operationen ( für "Create, Read, Update, Delete", "Erstellen, Lesen, Aktualisieren, Löschen") für die eben erstellte Tabelle tbl_user bereitstellen. Eine typische Aufgabenstellung aus der Praxis. Statt den nötigen Code mühevoll selbst zu schreiben, können Sie dazu den leistungsstarken Codegenerator Gii verwenden.

Info: Gii steht seit Version 1.1.2 zur Verfügung. In früheren Versionen wurde auch für die CRUD-Generierung der erwähnte yiic-Befehl verwendet. Weitere Details hierzu finden Sie unter CRUD-Operationen mit der yiic shell erstellen.

Gii konfigurieren

Um Gii zu verwenden, muss zunächst die Konfigurationsdatei in WebRoot/testdrive/protected/config/main.php angepasst werden:



Rufen Sie danach die URL http://hostname/testdrive/index.php?r=gii auf und melden Sie sich mit dem eben konfigurierten Passwort an.

Generieren des Usermodels

Wenn Sie nach der Anmeldung auf den Link Model Generator klicken, erscheint folgende Seite:

Model Generator

Model Generator

Tragen Sie in die Felder Table Name (Tabellenname) und Model Class (Modelklasse) die Werte tbl_user und User ein und klicken Sie den Button Preview um eine Vorschau des generierten Codes zu sehen. Klicken Sie nun auf den Generate-Button, um die Datei User.php in protected/models anzulegen. Wie wir später noch sehen werden, ermöglicht diese Modelklasse User den objektorientierten Zugriff auf die darunterliegende Datenbanktabelle.

CRUD-Code generieren

Wurde die Modelklasse erstellt, können Sie den Code für die CRUD-Operationen erzeugen. Rufen Sie dazu den Crud Generator in Gii auf:

CRUD Generator

CRUD Generator

Geben Sie User in das Feld Model Class und user (in Kleinbuchstaben) in das Feld Controller ID ein. Auch hier können Sie zunächst Preview klicken, bevor Sie die nötigen Codedateien mit Generate erstellen. Damit haben Sie die CRUD-Generierung abgeschlossen.

Aufruf der CRUD-Seiten

Sie können nun die Früchte Ihrer Arbeit genießen, indem sie folgende URL aufrufen:



Sie sehen eine Liste aller Benutzer in der Tabelle tbl_user.

Klicken Sie auf den Link Benutzer anlegen. Falls Sie noch nicht angemeldet sind, werden Sie zur Anmeldeseite weitergeleitet. Nach der Anmeldung erscheint ein Eingabeformular, mit dem Sie einen neuen Benutzer hinzufügen können. Füllen Sie das Formular aus, und klicken Sie unten auf den Button Erstellen. Bei Eingabefehlern erhalten Sie einen freundlichen Hinweis und der Datensatz wird nicht gespeichert. Nach dem erfolgreichen Speichern sollte der neu angelegte Benutzer in der Benutzerliste erscheinen.

Wiederholen Sie die obigen Schritte, und fügen Sie weitere Benutzer hinzu. Vielleicht haben Sie schon bemerkt, dass automatisch eine Seitenblätterung (engl.: pagination) angezeigt wird, sobald zu viele Einträge für eine Seite vorhanden sind.

Wenn Sie sich nun mit admin/admin als Administrator anmelden, können Sie hier Admin-Seite aufrufen:



Sie sehen eine übersichtliche Tabelle aller Benutzer. Zum Ändern der Sortierung können Sie auf einen Spaltentitel klicken. Und auch hier wird eine Seitenblätterung angezeigt, sobald einige Einträge vorhanden sind.

All dies haben Sie erreicht, ohne dafür eine einzige Codezeile schreiben zu müssen!

Administrationsseite für Benutzer

Administrationsseite für Benutzer

Seite zum Erstellen eines neuen Benutzers

Seite zum Erstellen eines neuen Benutzers
$Id: quickstart.first-app.txt 3219 2011-05-13 03:03:35Z qiang.xue $