Wenn Sie fragen: "Was ist Yii?" Schauen Sie sich mein früheres Tutorial an: Einführung in das Yii-Framework, Hier werden die Vorteile von Yii beschrieben und eine Übersicht über die Neuerungen in Yii 2.0 (veröffentlicht am 12. Oktober 2014) gegeben.
Beim Programmieren mit Yii2: Erste Schritte haben wir Yii2 lokal eingerichtet, eine Hello World-Anwendung erstellt, einen Remote-Server eingerichtet und GitHub zur Bereitstellung unseres Codes verwendet. In Teil zwei haben wir erfahren, wie Yii seine Model View Controller-Architektur implementiert und wie Webseiten und Formulare erstellt werden, die Daten sammeln und validieren. In diesem Lernprogramm verwenden wir die Datenbank- und aktiven Datensatzfunktionen von Yii, um die Codegenerierung für eine grundlegende Webanwendung zu automatisieren.
Für diese Beispiele stellen wir uns weiterhin vor, dass wir ein Framework für die Veröffentlichung einfacher Statusaktualisierungen erstellen, z. unser eigenes Mini-Twitter.
Zunächst müssen wir eine Datenbank in unserer Entwicklungsumgebung erstellen. Ich mache dies über die PHPMyAdmin-Webbenutzeroberfläche von MAMP. Navigieren Sie zu PHPMyAdmin, z. http: // localhost: 8888 / MAMP / index.php? page = phpmyadmin, wählen Sie die Datenbanken Registerkarte und erstellen Sie eine Datenbank namens Hallo
:
Sie können auch die MySQL-Befehlszeilenschnittstelle verwenden.
Jetzt stellen wir der Datenbank-Konfigurationsdatei von Yii Datenbank-Anmeldeinformationen zur Verfügung. Öffnen /hello/config/db.php
und geben Sie Ihre MySQL-Datenbankanmeldeinformationen ein. Meiner sieht so aus:
'yii \ db \ Connection', 'dsn' => 'mysql: host = localhost; dbname = hallo', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8 ',];
Jetzt erstellen wir unsere erste Datenbankmigration. Eine Migration bietet eine programmatische Methode zum Erstellen und Aktualisieren von Datenbankschemas. Dies ist besonders hilfreich, wenn Sie auf mehreren Servern oder in unterschiedlichen Umgebungen laufen. Dadurch entfällt die Schwierigkeit beim Import von SQL-Skripts.
Für unsere Codierungsbeispiele können Sie das Git-Repository aus dem letzten Tutorial verwenden, oder es kann das vollständige Repository hier heruntergeladen werden.
Bei unserer ersten Migration wird die Statustabelle erstellt. Öffnen Sie das Terminal und geben Sie Folgendes ein:
cd ~ / sites / hello ./yii migrate / create create_status_table
Es sollte so aussehen, wenn Sie fertig sind:
Wenn du öffnest \ Hallo \ Migrationen
, Sie sehen eine Datei mit dem Namen m141201_013120_create_status_table.php
. Es sollte beim Öffnen so aussehen:
Dies ist der Standard-Migrationscode, den Yii bereitstellt. Als Nächstes werden wir es aktualisieren, um die Felder bereitzustellen, die wir benötigen.
Aufbau der Statustabelle
In unserer Statustabelle wird der Nachrichtentext gespeichert und angegeben, ob ein Beitrag privat oder öffentlich ist. Jede Zeile hat auch eine ID, Zeitfelder zur Erstellung und Aktualisierung.
Aktualisieren Sie Ihren Migrationscode auf unseren:
public function up () $ tableOptions = null; if ($ this-> db-> driverName === 'mysql') $ tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB'; $ this-> createTable ('% status', ['id' => Schema :: TYPE_PK, 'message' => Schema :: TYPE_TEXT. 'NOT NULL DEFAULT ""', 'permissions' => Schema :: TYPE_SMALLINT. 'NOT NULL DEFAULT 0', 'created_at' => Schema :: TYPE_INTEGER. 'NOT NULL', 'updated_at' => Schema :: TYPE_INTEGER. 'NOT NULL',], $ tableOptions); public function down () $ this-> dropTable ('% status');Beachten Sie, wie wir Definitionen für die benötigten Felder hinzugefügt haben, z
Botschaft
,Berechtigungen
,hergestellt in
, undaktualisiert am
.Führen Sie die Migration aus
Um Yii mitzuteilen, dass die Tabelle erstellt werden soll, müssen wir die Migration ausführen. Es ist einfach. Wieder vom Terminal laufen wir
./ yii migrieren / up
:$ ./yii migrate / up Yii Migration Tool (basierend auf Yii v2.0.0) Insgesamt 1 neu anzuwendende Migration: m141201_013120_create_status_table Anwenden der obigen Migration? (Ja | Nein) [Nein]: Ja *** Anwenden von m141201_013120_create_status_table> Tabelle % status erstellen… fertig (Zeit: 0,032s) *** angewendet m141201_013120_create_status_table (Zeit: 0,038s) erfolgreich migriert.Wenn Sie die Tabelle mit PHPMyAdmin durchsuchen, sollten Sie etwa Folgendes sehen:
Nachdem wir nun die Datenbanktabelle erstellt haben, können wir Gii, den leistungsfähigen Gerüstgenerator von Yii, verwenden, um den gesamten Code für die Modellansicht zu automatisieren.
2. Gii verwenden: Der Yii-Code-Generator
Gii ist der Gerüstcode-Generator von Yii. Es verwendet sein Wissen über Ihr Datenbankschema, um gut geschriebenen Standard-Controller für Modellansicht für Ihre Anwendung zu generieren. Gii kann ein Datenbankschema in wenigen Minuten in eine funktionierende Webanwendung umwandeln. Es ist unglaublich mächtig. Lass mich dir zeigen, wie es funktioniert.
Das Modell erstellen
Mit Gii erstellen wir zunächst ein Modell, das auf jeder von uns erstellten Datenbanktabelle basiert. In unserem Beispiel verwenden wir die Statustabelle.
Um mit Gii zu beginnen, navigieren Sie zu Ihrer Webanwendung und fügen Sie hinzu
/ gii
, z.B. http: // localhost: 8888 / hallo / web / gii. Sie werden so etwas sehen:Klicke auf Modellgenerator, und eintreten
Status
in dem Tabellenname Feld:Wenn Sie auf klicken Vorschau, Es zeigt Ihnen, welche Dateien es erstellt. Da wir bereits eine Status.php-Modelldatei aus dem letzten Lernprogramm haben, klicken Sie auf Überschreiben. Dann klick Generieren.
Die Ergebnisse werden wie folgt aussehen:
Öffne das
/hello/models/Status.php
Datei und Sie sehen die grundlegenden Validierungsregeln und Formularattribute, die Yii für uns erstellt hat:'ID', 'message' => 'Message', 'permissions' => 'Permissions', 'created_at' => 'Created at', 'updated_at' => 'Updated At',];Erstellen der Webschnittstelle
Jetzt ist es an der Zeit, Gii zum Erstellen des Controllers und der Ansichten für die Statustabelle zu verwenden. Kehren Sie zur Gii-Startseite zurück und klicken Sie auf CRUD Generator, z.B. http: // localhost: 8888 / hallo / web / gii / crud:
Zum Modellklasse, eingeben
app \ models \ Status
(Diese Einträge unterscheiden zwischen Groß- und Kleinschreibung). Zum Modellklasse suchen, eingebenapp \ models \ StatusSearch
. Zum Controller-Klasse, eingebenApp \ Controller \ StatusController
. Es sollte so aussehen:Klicken Vorschau. Folgendes wird angezeigt: Klicken Sie auf Überschreiben wieder, da wir ältere Dateien aus dem letzten Tutorial haben, die aktualisiert werden müssen:
Wenn Sie auf klicken Generieren, Sie sehen alle Controller und generierten Dateien:
Die Standard-CRUD-Seiten
Navigieren Sie in Ihrem Browser zu http: // localhost: 8888 / hello / web / status und Sie sehen die generierte CRUD-Indexseite. Da sich noch keine Zeilen in der Datenbank befinden, wird sie leer angezeigt.
Klicken Sie jetzt auf Status erstellen und Sie sehen das Standard-Statusformular zum Erstellen, das Gii erstellt hat:
Es ist schon erstaunlich, wie schnell Gii Arbeitscode für uns erstellt. Als Nächstes passen wir den Gerüstcode an, damit dies für uns funktioniert.
3. Anpassen unseres Codes
Anpassen der Formularansicht
Bereinigen Sie das Formular. Im
/hello/views/Status/_form.php
, Entfernen Sie die erstellten und aktualisierten Felder:= $form->Feld ($ model, 'created_at') -> textInput ()?> = $form->Feld ($ model, 'updated_at') -> textInput ()?>Ersetzen Sie das Berechtigungsfeld durch den Dropdown-Listencode, den wir in Teil zwei dieser Serie erstellt haben:
= $form->Feld ($ model, 'permissions') -> dropDownList ($ model-> getPermissions (), ['prompt' => '- Wählen Sie Ihre Berechtigungen -'])?>Wir müssen das setzen
getPermissions
Funktion auch im Modell. Bearbeiten/hello/models/Status.php
. Setzen Sie die konstanten Definitions- und Berechtigungsfunktionen zurück:const PERMISSIONS_PRIVATE = 10; const PERMISSIONS_PUBLIC = 20;… public function getPermissions () return array (selbst :: PERMISSIONS_PRIVATE => 'Privat', selbst :: PERMISSIONS_PUBLIC => 'Öffentlich'); public function getPermissionsLabel ($ permissions) if ($ permissions == self :: PERMISSIONS_PUBLIC) return 'Public'; else return 'Privat';Ihr neues Statusformular sollte folgendermaßen aussehen:
Wir müssen den Controller ein wenig anpassen, damit das Formular richtig gespeichert wird.
Anpassen des Controllers
Im
/hello/controllers/StatusController.php
, ersetze dasactionCreate
Methode mit diesem Code:öffentliche Funktion actionCreate () $ model = new Status (); if ($ model-> load (Yii :: $ app-> request-> post ())) $ model-> created_at = time (); $ model-> updated_at = time (); if ($ model-> save ()) return $ this-> redirect (['view', 'id' => $ model-> id]); return $ this-> render ('create', ['model' => $ model,]);Wenn das Formular gebucht wird, legen wir manuell das fest
hergestellt in
undaktualisiert am
Felder, dann speichern wir die Daten in der Datenbank.Wenn Sie Ihre erste Statusaktualisierung speichern, wird die folgende Ansichtsseite angezeigt:
Layout anpassen
Lassen Sie uns die Navbar neu einstellen, damit sie nicht für Status herunterfällt, sondern direkt zur Statusindex-Seite springt. Bearbeiten
/hello/views/layouts/main.php
und ersetzen Sie dieNav :: Widget
Code mit diesem Code:echo Nav :: widget (['options' => ['class' => 'navbar-nav navbar-right'], 'items' => [['label' => 'Home', 'url' => [ '/ site / index']], ['label' => 'Status', 'url' => ['/ status / index']], ['label' => 'About', 'url' => [ '/ site / about']], ['label' => 'Contact', 'url' => ['/ site / contact']], Yii :: $ app-> user-> isGuest? ['label' => 'Login', 'url' => ['/ site / login']]: ['label' => 'Logout ('. Yii :: $ app-> user-> identity-> Benutzername. ')' , 'url' => ['/ site / logout'], 'linkOptions' => ['data-method' => 'post']],],]);Die Rasteransicht
Wenn Sie zur Statusindexansicht zurückkehren, können Sie sehen, dass das Yii2-Grid mit Daten gefüllt ist:
Der Code, der diese Seite generiert, ist in
/hello/views/status/index.php
:title = 'Status'; $ this-> params ['breadcrumbs'] [] = $ this-> title; ?>= Html::encode($this->Titel)?>
Rendern ('_ search', ['model' => $ searchModel]); ?>= Html::a('Create Status', ['create'], ['class' => 'btn btn-success'])?>
= GridView::widget([ 'dataProvider' => $ dataProvider, 'filterModel' => $ searchModel, 'Spalten' => [['class' => 'yii \ grid \ SerialColumn'], 'id', 'message: ntext', 'permissions', 'created_at', 'updated_at', ['class' => 'yii \ grid \ ActionColumn'],],]); ?>Wenn Sie die Spaltensortierung ausprobieren und Symbole anzeigen, aktualisieren und löschen, werden Sie feststellen, dass Gii auch alle Funktionen für diese Funktionen entwickelt hat.
So haben wir in wenigen Minuten ein Schema für unsere Datenbank erstellt und ein Modell sowie den gesamten Webanwendungscode generiert, der für eine Basisanwendung erforderlich ist. Ich hoffe, Sie haben die Codegenerierungsfunktionen von YiI genauso beeindruckt wie ich.
Was kommt als nächstes?
Als Nächstes zeige ich Ihnen, wie Sie Benutzerregistrierungs- und Anmeldefunktionen in unsere Anwendung integrieren, um Join-Beziehungen zwischen Statusbeiträgen und bestimmten Benutzern einzurichten.
Wenn Sie wissen möchten, wann das nächste Yii2-Tutorial ankommt, folgen Sie mir @reifman auf Twitter oder besuchen Sie meine Tuts + Instructor-Seite. Meine Ausbilderseite enthält alle Artikel dieser Serie, sobald sie veröffentlicht sind.
ähnliche Links