Hoe te programmeren met Yii2 gebruik van de geavanceerde toepassingssjabloon

Wat je gaat creëren

Als je vraagt: "Wat is Yii?" uitchecken Introductie tot het Yii Framework, die de voordelen van Yii beoordeelt en een overzicht van Yii 2.0 bevat.

In deze serie Programming With Yii2 begeleid ik lezers in gebruik van het Yii2 Framework voor PHP. Als u Yii begint te gebruiken voor echte ontwikkeling, wilt u misschien uw volgende project starten met zijn geavanceerde toepassingssjabloon. Het biedt onder meer geïntegreerde functies voor gebruikersbeheer en twee applicaties, één voor de front-end kant van de consument en de andere, een administratieve back-end.

In deze zelfstudie zal ik u kennis laten maken met de geavanceerde Yii2-sjabloon en u door de basisinstellingen en het gebruik leiden. Tijdens het programmeren met Yii2: integratie van gebruikersregistratie met het verkennen van gebruikersbeheer bovenop de standaardsjabloon met de Yii2-gebruikersextensie, start deze zelfstudie een nieuwe repository met de geavanceerde sjabloon in plaats van door te gaan met voorbeelden op onze standaard Yii hello-codebase. 

Voordat we van start gaan, onthoud alsjeblieft dat ik probeer deel te nemen aan de onderstaande discussies. Als je een vraag of een suggestie voor een onderwerp hebt, plaats dan een reactie hieronder of neem contact met mij op via Twitter @reifman. U kunt mij ook rechtstreeks e-mailen.

Als je hebt gemerkt dat er vertraging is opgetreden in deze serie, komt dat omdat ik recentelijk ben teruggekomen van hersenoperaties. Bedankt voor uw geduld en ondersteuning - het is goed om regelmatig opnieuw te schrijven en ik kijk uit naar de voortzetting van de dekking van Yii2.

Hoe de geavanceerde sjabloon anders is

De meest bruikbare reden om te migreren naar de geavanceerde sjabloon is voor de implementatie van gebruikersbeheerfuncties zoals aanmelden, inloggen, uitloggen en opnieuw instellen van wachtwoorden.

De geavanceerde sjabloon biedt ook meerdere toegangsstructuren voor een grotere webtoepassing. Het heeft een front-end en back-end webapplicatie voor eindgebruikers en beheerders. Maar dit kan ook worden uitgebreid, bijvoorbeeld voor moderators of een speciale API, hoewel er andere manieren zijn om deze functies in één applicatie te integreren.

Hier is een grafiek met de belangrijkste verschillen tussen de basis-vanille Yii en de geavanceerde installatie:

In mijn laatste handleidingen over de Yii2-gebruikersextensie ben ik meer en meer onder de indruk van de bijbehorende functies als alternatief voor de geavanceerde sjabloon. Het kan echter ook eenvoudig worden geïntegreerd in beide installaties.

Het is de moeite waard om de geavanceerde sjabloon te verkennen voordat u aan een groot project begint. Ik sta op het punt om je te helpen precies dat te doen.

De geavanceerde sjabloon installeren

Laten we beginnen met het installeren van de geavanceerde sjabloon met Yii2. We kunnen de instructies volgen in het geavanceerde sjabloonproject op GitHub.

Componist bijwerken

Ten eerste zorgen we ervoor dat de componist de pakketten heeft die hij nodig heeft:

$ composer global vereist "fxp / composer-asset-plugin: ~ 1.0.3" Gewijzigde huidige map naar /Users/Jeff/.composer ./composer.json is bijgewerkt. Laden van composer-repositories met pakketinformatie Bijwerken van afhankelijkheden (inclusief require-dev ) Niets te installeren of te updaten Autoload-bestanden genereren

Yii installeren met de geavanceerde sjabloon

Dan kunnen we Yii installeren met de geavanceerde projectsjabloon. We bellen onze tutorial-app yiiplus:

$ composer create-project --prefer-dist yiisoft / yii2-app-advanced yiiplus yiisoft / yii2-app-advanced installeren (2.0.6) - yiisoft / yii2-app-advanced installeren (2.0.6) Bezig met laden van cache gemaakt project in yiiplus Composer-repositories laden met pakketinformatie Afhankelijkheden installeren (inclusief require-dev) - Installeren van yiisoft / yii2-composer (2.0.3) Laden vanuit cache - Installeren van ezyang / htmlpurifier (v4.6.0) Laden vanuit cache - Installeren van cebe / markdown ( 1.1.0) Bezig met laden van cache - Installeren van bower-asset / jQuery (2.1.4) Bezig met laden van cache - Installeren van bower-asset / jquery.inputmask (3.1.63) Bezig met laden van cache - Installeren van bower-asset / punycode (v1.3.2 ) Laden vanuit cache - Installeren van bower-asset / yii2-pjax (v2.0.4) Bezig met laden van cache - Installeren van yiisoft / yii2 (2.0.6) Laden vanuit cache - Installeren van swiftmailer / swiftmailer (v5.4.1) Laden vanuit cache - Installeren van yiisoft / yii2-swiftmailer (2.0.4) Bezig met laden van cache - Installeren van yiisoft / yii2-codeception (2.0.4) Bezig met laden van cache - Inst alling bower-asset / bootstrap (v3.3.5) Bezig met laden van cache - Installeren van yiisoft / yii2-bootstrap (2.0.5) Bezig met laden van cache - Installeren van yiisoft / yii2-debug (2.0.5) Laden vanuit cache - Installeren van bower-asset / typeahead.js (v0.10.5) Bezig met laden van cache - Installeren van phpspec / php-diff (v1.0.2) Bezig met laden van cache - Installeren van yiisoft / yii2-gii (2.0.4) Laden vanuit cache - Installeren van fzaninotto / faker (v1.5.0 ) Bezig met laden van cache - Installeren van yiisoft / yii2-faker (2.0.3) Laden vanuit cache Schrijfslotbestand Autoload-bestanden genereren

Initialisatie van onze Yii-toepassing

Laten we nu onze applicatie initialiseren: 

$ cd ~ / Sites / yiiplus $ php init Yii Application Initialization Tool v1.0 Welke omgeving wilt u dat de toepassing wordt geïnitialiseerd? [0] Ontwikkeling [1] Productie Uw keuze [0-1, of "q" om te stoppen] 0 Initialiseer de applicatie onder 'Ontwikkeling' omgeving? [yes | no] yes Start initialisatie ... genereer backend / config / main-local.php genereer backend / config / params-local.php genereer backend / web / index-test.php genereer backend / web / index.php genereer gemeenschappelijk / config / main-local.php genereer common / config / params-local.php genereer console / config / main-local.php genereer console / config / params-local.php genereer frontend / config / main-local.php genereer frontend / config / params-local.php genereer frontend / web / index-test.php genereer frontend / web / index.php genereer yii genereer cookie-validatiesleutel in backend / config / main-local.php genereer cookie-validatiesleutel in frontend / config / main-local.php chmod 0777 backend / runtime chmod 0777 backend / web / assets chmod 0777 frontend / runtime chmod 0777 frontend / web / assets chmod 0755 yii chmod 0755 tests / codeception / bin / yii ... initialisatie voltooid.

Maak de database gereed

Vervolgens gebruik ik de door MAMP geïnstalleerde versie van PHPMyAdmin om de database te maken:

Klik creëren. Door screenshots van de tutorial te maken, vergat ik om op create te klikken en vroeg ik me af waarom ik mijn database niet kon migreren - deze bestond nog niet.

Bewerk vervolgens /common/config/main-local.php om uw database-instellingen op te nemen:

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

Vervolgens bent u klaar om de databasemigratie uit te voeren om uw toepassing te initialiseren. Dit stelt in de eerste plaats de tabel voor gebruikersbeheer in:

$ ./yii migreren Yii Migration Tool (gebaseerd op Yii v2.0.6) Migratietheatentabel maken "migratie" ... Klaar. Totaal 1 nieuwe migratie die moet worden toegepast: m130524_201442_init De bovenstaande migratie toepassen? (ja | nee) [nee]: ja *** toepassen m130524_201442_init> tabel maken % user ... klaar (tijd: 0.007s) *** toegepast m130524_201442_init (tijd: 0.022s) Migratie succesvol uitgevoerd. 

Apache configureren voor de frontend- en back-end-sites

Wanneer we onze ontwikkel- of productieomgeving configureren met de geavanceerde sjabloon, moeten we de webserver naar een ander rootpad verwijzen, twee eigenlijk. 

Eerst bewerken we ons hosts-bestand met frontend.dev en backend.dev:

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

In mijn ontwikkelomgeving met MAMP koppel ik mijn yiiplus-map aan de htdocs van MAMP:

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

Vervolgens zal ik de include voor virtuele hosts activeren (uncomment):

$ nano /Applications/MAMP/conf/apache/httpd.conf # Virtuele hosts omvatten /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

En configureer paden voor elk van mijn servernamen:

$ nano /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf NameVirtualHost *: 8888  Servernaam frontend.dev DocumentRoot / Toepassingen / MAMP / htdocs / yiiplus / frontend / web /  # gebruik mod_rewrite voor mooie URL-ondersteuning RewriteEngine op # Als een map of bestand bestaat, gebruik dan de aanvraag direct RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Stuur het verzoek door naar index.php RewriteRule. index.php # gebruik index.php als indexbestand DirectoryIndex index.php # ... andere instellingen ...    Servernaam backend.dev DocumentRoot / Toepassingen / MAMP / htdocs / yiiplus / backend / web /  # gebruik mod_rewrite voor mooie URL-ondersteuning RewriteEngine op # Als een map of bestand bestaat, gebruik dan de aanvraag direct RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Stuur het verzoek door naar index.php RewriteRule. index.php # gebruik index.php als indexbestand DirectoryIndex index.php # ... andere instellingen ...  

Zodra dat is voltooid, ziet u hoe de front-end-website er uit zal zien op http://frontend.dev:8888:

De back-end-site vraagt ​​u om in te loggen - het is voor beheerders:

Verkenning van gebruikersbeheer

Nu ga ik u door de basisgebruikersbeheerfuncties van de geavanceerde sjabloon leiden. Maar eerst moeten we ervoor zorgen dat we e-mails van Yii ontvangen in onze ontwikkelingsomgeving.

E-mailbezorging configureren

Gebruikersbeheer verzendt e-mails voor wachtwoordresets, dus moeten we Yii's SwiftMailer SMTP-configuratie activeren. Ik ga Mailtrap.io gebruiken, dat ik in een eerdere zelfstudie, Introduction to Mailtrap, heb onderzocht: Een nep-SMTP-server voor pre-productie testen van applicatie-e-mail.

Mailtrap biedt een nep-SMTP-server voor uw ontwikkelingsteam om e-mails verzonden vanuit de pre-productieomgevingen te testen, te bekijken en te delen en te testen met echte gegevens zonder het risico van spammen van echte klanten. Voor veel ontwikkeltaken is het gebruik van Mailtrap gratis.

In wezen meldt u zich aan voor Mailtrap en verzendt u al uw pre-productieomgevingse-mail via uw valse Mailtrap SMTP-server. Hier is een kort video-overzicht van Mailtrap by Railsware:

Als u de zelfstudie volgt en een Mailtrap-account maakt, ziet u uw demo-inbox:

En wanneer u op het pictogram Instellingen in de lijst met inbox klikt, ziet u dat elke postvak IN van Mailtrap zijn eigen SMTP-serverreferenties heeft:

Met Yii, ben ik bezig de SMTPMailer-SMTP-instellingen bij te werken in /common/config/main-local.php. Hier is hoe het eruit kan zien:

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

Merk op dat als u de Viewpath Zoals hierboven is weergegeven, kunt u een bug tegenkomen waarbij de e-mailsjabloonbestanden niet worden gevonden.

Aanmelding en registratie

Dit is wat het registratiescherm aan de voorkant ziet:

Het zal u op de startpagina in ingelogde toestand brengen:

Aanmelden

Dit is het inlogscherm:

Uw wachtwoord vergeten

En hier is de Uw wachtwoord vergeten scherm:

Als u om een ​​nieuw wachtwoord vraagt, vindt u het binnen Mailtrap:

Wat is het volgende?

Misschien wil je mijn Building Your Startup With PHP-serie bekijken, die de geavanceerde template van Yii2 gebruikt. Als u ook geïnteresseerd bent in het integreren van deze tutorial met Yii2 User, raadpleegt u de gids voor het integreren van Yii2 User met de geavanceerde sjabloon en Google-authenticatie (binnenkort beschikbaar).

Ik hoop dat je het leuk vond om meer te weten te komen over de geavanceerde toepassingssjabloon van Yii2. Ik ben benieuwd naar uw feedback in de opmerkingen over of u de voorkeur geeft aan de standaardsjabloon.

Kijk uit naar komende tutorials in mijn Programming With Yii2-serie terwijl ik verder duik in verschillende aspecten van het framework. Ik verwelkom aanvragen voor functies en onderwerpen. Je kunt ze plaatsen in de reacties hieronder of e-mail me op mijn Lookahead Consulting-website.

Als je wilt weten wanneer de volgende Yii2-handleiding aankomt, volg me dan @reifman op Twitter of bekijk mijn instructeurspagina. Op mijn instructeurspagina staan ​​alle artikelen uit deze serie zodra ze zijn gepubliceerd. 

  • Yii2 geavanceerde sjabloon
  • Yii2 Developer Exchange
  • Een verzameling Yii-gebaseerde scripts op CodeCanyon