Programmieren mit Yii2 Verwenden der erweiterten Anwendungsvorlage

Was Sie erstellen werden

Wenn Sie fragen: "Was ist Yii?" Auschecken Einführung in das Yii-Framework, Hier werden die Vorteile von Yii beschrieben und ein Überblick über Yii 2.0 gegeben.

In dieser Programmierserie mit Yii2 leite ich die Leser beim Einsatz des Yii2-Frameworks für PHP. Wenn Sie anfangen, Yii für die echte Entwicklung zu verwenden, möchten Sie möglicherweise das nächste Projekt mit seiner erweiterten Anwendungsvorlage starten. Es bietet unter anderem integrierte Benutzerverwaltungsfunktionen sowie zwei Anwendungen, eine für das Consumer-Frontend und die andere ein Administrations-Backend.

In diesem Lernprogramm werde ich Ihnen die erweiterte Vorlage von Yii2 vorstellen und Sie durch die grundlegenden Einstellungen und die Verwendung führen. Beim Programmieren mit Yii2: Integrieren der Benutzerregistrierung Die Implementierung der Benutzerverwaltung über die Basisvorlage mit der Erweiterung "Yii2 User" hinaus wird in diesem Lernprogramm ein neues Repository mit der erweiterten Vorlage gestartet, anstatt Beispiele auf unserer Basis-Yii-Hallo-Codebasis fortzusetzen. 

Bevor wir anfangen, denken Sie daran, ich versuche, an den folgenden Diskussionen teilzunehmen. Wenn Sie eine Frage oder ein Thema haben, schreiben Sie bitte einen Kommentar oder kontaktieren Sie mich unter Twitter @reifman. Sie können mich auch direkt per E-Mail kontaktieren.

Wenn Sie bemerkt haben, dass in dieser Serie eine Verzögerung aufgetreten ist, liegt dies daran, dass ich kürzlich von einer Gehirnoperation zurückgekehrt bin. Vielen Dank für Ihre Geduld und Ihre Unterstützung. Es ist schön, regelmäßig wieder zu schreiben. Ich freue mich darauf, Yii2 weiter zu behandeln.

Wie unterscheidet sich die erweiterte Vorlage?

Der nützlichste Grund für die Migration auf die erweiterte Vorlage ist die Implementierung von Benutzerverwaltungsfunktionen wie Anmeldung, Anmeldung, Abmeldung und Zurücksetzen von Kennwörtern.

Die erweiterte Vorlage bietet auch mehrere Zugriffsbäume für eine größere Webanwendung. Es verfügt über eine Front-End- und Back-End-Webanwendung für Endbenutzer und Administratoren. Dies kann jedoch auch erweitert werden, beispielsweise für Moderatoren oder eine spezielle API. Es gibt jedoch auch andere Möglichkeiten, diese Funktionen in einer Anwendung zu integrieren.

Hier ist ein Diagramm, das die Hauptunterschiede zwischen der Basis-Vanille Yii und der fortgeschrittenen Installation zeigt:

In meinen neuesten Tutorials zur Yii2 User-Erweiterung bin ich zunehmend beeindruckt von seinen Features als Alternative zur erweiterten Vorlage. Es kann jedoch auch problemlos in beide Installationen integriert werden.

Es lohnt sich, die erweiterte Vorlage zu erkunden, bevor Sie ein großes Projekt beginnen. Ich werde dir gerade dabei helfen.

Erweiterte Vorlage installieren

Beginnen wir mit der Installation der erweiterten Vorlage mit Yii2. Wir können den Anweisungen im Advanced Template-Projekt auf GitHub folgen.

Composer wird aktualisiert

Zuerst stellen wir sicher, dass der Komponist die Pakete hat, die er benötigt:

$ composer global erfordert "fxp / composer-asset-plugin: ~ 1.0.3". Aktuelles Verzeichnis in /Users/Jeff/.composer geändert ./composer.json wurde aktualisiert. Composer-Repositorys mit Paketinformationen werden geladen ) Keine zu installierenden oder aktualisierenden Dateien

Installieren von Yii mit der erweiterten Vorlage

Dann können wir Yii mit der erweiterten Projektvorlage installieren. Wir rufen unsere Tutorial-App an yiiplus:

$ composer create-project --prefer-dist yiisoft / yii2-app-advanced yiiplus yiisoft / yii2-app-advanced (2.0.6) installieren - yiisoft / yii2-app-advanced (2.0.6) installieren Aus dem Cache erstellen Erstelltes Projekt in yiiplus Composer-Repositorys mit Paketinformationen laden Abhängigkeiten installieren (einschließlich required-dev) - yiisoft / yii2-composer installieren (2.0.3) Laden aus dem Cache - Installieren von ezyang / htmlpurifier (v4.6.0) Laden aus dem Cache - Installieren von cebe / markdown ( 1.1.0) Laden aus Cache - Installieren von Bower-Asset / Jquery (2.1.4) Laden aus Cache - Installieren von Bower-Asset / Jquery.inputmask (3.1.63) Laden aus Cache - Installieren von Bower-Asset / Punycode (v1.3.2 ) Laden aus dem Cache - Installieren von bower-asset / yii2-pjax (v2.0.4) Laden aus dem Cache - Installieren von yiisoft / yii2 (2.0.6) Laden aus dem Cache - Installieren von swiftmailer / swiftmailer (v5.4.1) Laden aus dem Cache - Installieren von yiisoft / yii2-swiftmailer (2.0.4) Laden aus dem Cache - Installieren von yiisoft / yii2-codeception (2.0.4) Laden aus dem Cache - Inst alling bower-asset / bootstrap (v3.3.5) Laden aus dem Cache - Installieren von yiisoft / yii2-bootstrap (2.0.5) Laden aus dem Cache - Installieren von yiisoft / yii2-debug (2.0.5) Laden aus dem Cache - Installieren von Bower-Asset / typeahead.js (v0.10.5) Laden aus dem Cache - Installieren von phpspec / php-diff (v1.0.2) Laden aus dem Cache - Installieren von yiisoft / yii2-gii (2.0.4) Laden aus dem Cache - Installieren von fzaninotto / faker (v1.5.0 ) Laden aus dem Cache - Installieren von yiisoft / yii2-faker (2.0.3) Laden aus dem Cache Schreiben einer Sperrdatei Erstellen von Autoload-Dateien

Initialisierung unserer Yii-Anwendung

Lassen Sie uns nun unsere Anwendung initialisieren: 

$ cd ~ / Sites / yiiplus $ php init Yii Application Initialization Tool v1.0 In welcher Umgebung soll die Anwendung initialisiert werden? [0] Entwicklung [1] Produktion Ihre Wahl [0-1 oder "q" zum Beenden] 0 Initialisieren Sie die Anwendung in der Umgebung "Entwicklung"? [ja | nein] ja Initialisierung starten… backend / config / main-local.php generieren backend / config / params-local.php backend generieren / web / index-test.php generieren backend / web / index.php generieren allgemein / config / main-local.php generieren common / config / params-local.php generieren Konsole / config / main-local.php generieren Konsole / config / params-local.php generieren Frontend / config / main-local.php generieren Frontend / config / params-local.php Frontend generieren / web / index-test.php generieren Frontend / web / index.php generieren yii generieren Cookie-Validierungsschlüssel in Backend / config / main-local.php generieren Cookie-Validierungsschlüssel in Frontend / config / main-local.php chmod 0777 Backend / Laufzeit chmod 0777 Backend / Web / Assets chmod 0777 Frontend / Laufzeit chmod 0777 Frontend / Web / Assets chmod 0755 yii chmod 0755 Tests / Codeception / bin / yii ... Die Initialisierung ist abgeschlossen.

Bereiten Sie die Datenbank vor

Als Nächstes verwende ich die installierte Version von PHPMyAdmin von MAMP, um die Datenbank zu erstellen:

Klicken Erstellen. Bei Screenshots für das Tutorial habe ich vergessen, auf Erstellen zu klicken, und wunderte mich dann, warum ich meine Datenbank nicht migrieren konnte - sie existierte noch nicht.

Bearbeiten Sie als Nächstes /common/config/main-local.php, um Ihre Datenbankeinstellungen aufzunehmen:

 ['db' => ['class' => 'yii \ db \ Connection', 'dsn' => 'mysql: host = localhost; dbname = yiiplus', 'username' => 'root', 'password' = > '-localmysqldevpwd-', 'Zeichensatz' => 'utf8',], 'mailer' => [ 

Anschließend können Sie die Datenbankmigration ausführen, um Ihre Anwendung zu initialisieren. Dadurch wird hauptsächlich die Tabelle für die Benutzerverwaltung eingerichtet:

$ ./yii migrieren Yii Migration Tool (basierend auf Yii v2.0.6) Erstellen der Migrationsprotokolltabelle "Migration" ... Fertig. Insgesamt 1 neue Migration, die angewendet werden soll: m130524_201442_init Anwenden der obigen Migration? (Ja | Nein) [Nein]: Ja *** Anwendung von m130524_201442_init> create table % user… fertig (Zeit: 0,007s) *** angewendet m130524_201442_init (Zeit: 0,022s) Migriert erfolgreich. 

Konfigurieren von Apache für die Front-End- und Back-End-Sites

Wenn wir unsere Entwicklungs- oder Produktionsumgebung mit der erweiterten Vorlage konfigurieren, müssen wir den Webserver auf einen anderen Stammpfad verweisen, eigentlich auf zwei. 

Zuerst bearbeiten wir unsere Hosts-Datei, um frontend.dev und backend.dev einzuschließen:

$ more / etc / hosts 127.0.0.1 localhost 127.0.0.1 frontend.dev 127.0.0.1 backend.dev

In meiner Entwicklungsumgebung mit MAMP verknüpfe ich mein yiiplus-Verzeichnis mit den htdocs von MAMP:

 $ cd / Applications / MAMP / htdocs / $ ln -s ~ / Sites / yiiplus / Applications / MAMP / htdocs / yiiplus

Dann werde ich das Include für virtuelle Hosts aktivieren (unkommentieren):

$ nano /Applications/MAMP/conf/apache/httpd.conf # Virtuelle Hosts enthalten /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Und konfiguriere Pfade für jeden meiner Servernamen:

$ nano /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf NameVirtualHost *: 8888  ServerName frontend.dev DocumentRoot / Anwendungen / MAMP / htdocs / yiiplus / frontend / web /  # use mod_rewrite für Unterstützung für hübsche URLs RewriteEngine on # Wenn ein Verzeichnis oder eine Datei vorhanden ist, verwenden Sie die Anforderung direkt RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Andernfalls leiten Sie die Anforderung an index.php RewriteRule weiter. index.php # verwendet index.php als Indexdatei DirectoryIndex index.php #… andere Einstellungen…    ServerName backend.dev DocumentRoot / Anwendungen / MAMP / htdocs / yiiplus / backend / web /  # use mod_rewrite für Unterstützung für hübsche URLs RewriteEngine on # Wenn ein Verzeichnis oder eine Datei vorhanden ist, verwenden Sie die Anforderung direkt RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Andernfalls leiten Sie die Anforderung an index.php RewriteRule weiter. index.php # verwendet index.php als Indexdatei DirectoryIndex index.php #… andere Einstellungen…  

Sobald dies abgeschlossen ist, wird die Front-End-Website unter http://frontend.dev:8888 folgendermaßen aussehen:

Die Back-End-Site fordert Sie auf, sich anzumelden. Dies ist für Administratoren:

Erkundung der Benutzerverwaltung

Jetzt werde ich Sie durch die grundlegenden Benutzerverwaltungsfunktionen der erweiterten Vorlage führen. Zunächst müssen wir jedoch sicherstellen, dass wir in unserer Entwicklungsumgebung E-Mails von Yii erhalten.

E-Mail-Zustellung konfigurieren

Die Benutzerverwaltung sendet E-Mails für das Zurücksetzen von Kennwörtern. Daher müssen Sie die SwiftMailer SMTP-Konfiguration von Yi aktivieren. Ich werde Mailtrap.io verwenden, das ich in einem früheren Tutorial, Einführung in Mailtrap: Ein gefälschter SMTP-Server für den Pre-Production-Test von Anwendungs-E-Mails untersucht habe.

Mailtrap bietet einen gefälschten SMTP-Server für Ihr Entwicklungsteam zum Testen, Anzeigen und Freigeben von E-Mails, die aus den Produktionsumgebungen gesendet wurden, und zum Testen mit realen Daten, ohne das Risiko von echten Kunden zu spammen. Für viele Entwicklungsaufgaben ist die Verwendung von Mailtrap kostenlos.

Im Wesentlichen melden Sie sich für Mailtrap an und senden alle Ihre E-Mails aus der Präproduktionsumgebung über Ihren gefälschten Mailtrap-SMTP-Server. Hier ist eine kurze Videoübersicht von Mailtrap by Railsware:

Wenn Sie dem Tutorial folgen und ein Mailtrap-Konto erstellen, wird der Demo-Posteingang angezeigt:

Wenn Sie auf das Symbol Einstellungen in der Posteingangsliste klicken, sehen Sie, dass jeder Mailtrap-Posteingang über seine eigenen SMTP-Server-Anmeldeinformationen verfügt:

Mit Yii aktualisiere ich die SwiftMailer SMTP-Einstellungen in /common/config/main-local.php. So könnte es aussehen:

 'mailer' => ['class' => 'yii \ swiftmailer \ Mailer', 'viewPath' => '@ common / mail', 'useFileTransport' => false, 'transport' => ['class' => ' Swift_SmtpTransport ',' host '=>' mailtrap.io ',' username '=>' 29xxxxxxxxxxx72 ',' password '=>' 2c3xxxxxxxxxxf5 ',' port '=>' 2525 ',' Verschlüsselung '=>' tls ', ],],

Beachten Sie, wenn Sie das nicht anpassen viewPath Wie oben gezeigt, kann es vorkommen, dass die E-Mail-Vorlagendateien nicht gefunden werden.

Anmeldung und Registrierung

Der Front-End-Registrierungsbildschirm sieht folgendermaßen aus:

Es wird Sie auf der Startseite im angemeldeten Zustand landen:

Einloggen

Hier ist der Anmeldebildschirm:

Haben Sie Ihr Passwort vergessen

Und hier ist der Haben Sie Ihr Passwort vergessen Bildschirm:

Wenn Sie nach einem neuen Passwort fragen, finden Sie es in Postfalle:

Was kommt als nächstes?

Vielleicht möchten Sie sich die Reihe zum Erstellen Ihres Startups mit PHP ansehen, die die erweiterte Vorlage von Yii2 verwendet. Wenn Sie daran interessiert sind, dieses Lernprogramm in Yii2 User zu integrieren, lesen Sie die Anleitung zur Integration von Yii2 User mit der erweiterten Vorlage und der Google-Authentifizierung (in Kürze)..

Ich hoffe, es hat Ihnen Spaß gemacht, etwas über die Yii2 Advanced Application Template zu lernen. Ich würde mich freuen, Ihr Feedback in den Kommentaren zu hören, ob Sie es der Basisvorlage vorziehen.

Achten Sie auf kommende Tutorials in meiner Programmierreihe "Programmieren mit Yii2", während ich mich weiter mit verschiedenen Aspekten des Frameworks beschäftige. Ich freue mich über Feature- und Themenanfragen. Sie können sie in den Kommentaren unten posten oder mich auf meiner Lookahead Consulting-Website per E-Mail benachrichtigen.

Wenn Sie wissen möchten, wann das nächste Yii2-Tutorial ankommt, folgen Sie mir @reifman auf Twitter oder besuchen Sie meine Instructor-Seite. Meine Ausbilderseite enthält alle Artikel dieser Serie, sobald sie veröffentlicht sind. 

  • Yii2 Erweiterte Vorlage
  • Yii2 Developer Exchange
  • Eine Sammlung von Yii-basierten Skripten zu CodeCanyon