Cum se programează cu Yii2 Utilizarea șablonului aplicației avansate

Ce veți crea

Dacă vă întrebați: "Ce este Yii?" verifică Introducere în Cadrul Yii, care analizează beneficiile Yii și include o prezentare generală a Yii 2.0.

În această programare cu seria Yii2, ghid direct cititorii în folosirea cadrului Yii2 pentru PHP. Pe măsură ce începeți să utilizați Yii pentru o dezvoltare reală, vă recomandăm să începeți următorul proiect cu modelul de aplicație avansată. Printre altele, acesta oferă caracteristici integrate de gestionare a utilizatorului, precum și două aplicații, una pentru front-end orientată către consumator și cealaltă, un spate administrativ în spate.

În acest tutorial, vă voi prezenta modelul Yii2 Advanced și vă va îndruma în configurarea și utilizarea de bază. În timp ce programarea cu Yii2: Integrarea înregistrării utilizatorilor a explorat managementul de implementare a utilizatorilor în partea de sus a șablonului de bază cu extensia User Yii2, acest tutorial va lansa un depozit nou cu șabloanele avansate, în loc să continue exemplele de bază pe Yii hello codebase. 

Înainte de a începe, amintiți-vă, încerc să particip la discuțiile de mai jos. Dacă aveți o întrebare sau o sugestie de subiect, vă rugăm să postați un comentariu de mai jos sau să mă contactați pe Twitter @reifman. De asemenea, puteți să-mi trimiteți un e-mail direct.

Dacă ați observat că a existat o întârziere în această serie, este pentru că sunt recent înapoi de la operația creierului. Vă mulțumim pentru răbdarea și sprijinul dvs. - este bine să scrieți din nou în mod regulat și aștept cu nerăbdare să vă continuăm să reflectați Yii2.

Modul în care șablonul avansat este diferit

Motivul cel mai util pentru migrarea la șablonul avansat este implementarea funcțiilor de gestionare a utilizatorilor, cum ar fi înscrierea, conectarea, deconectarea parolei și resetarea parolei.

Șablonul avansat oferă, de asemenea, arbori de acces multipli pentru o aplicație web mai mare. Are o aplicație web front-end și back-end pentru utilizatorii finali și administratori. Dar acest lucru ar putea fi extins, de exemplu, pentru moderatori sau un API special, deși există și alte modalități de a integra aceste funcții într-o singură aplicație.

Iată o diagramă care arată principalele diferențe dintre vanilia de bază Yii și instalarea avansată:

În cele mai recente tutoriale despre extensia utilizatorului Yii2, sunt din ce în ce mai impresionată de setul său de funcții ca o alternativă la șablonul avansat. Cu toate acestea, acesta poate fi ușor integrat în orice instalație.

Merită să explorați șablonul avansat înainte de a începe un proiect important. Sunt pe cale să te ajut să faci asta.

Instalarea șablonului avansat

Să începem să instalăm șablonul avansat cu Yii2. Putem urma instrucțiunile de la proiectul pentru șabloane avansate pe GitHub.

Actualizarea compozitorului

În primul rând, vom asigura că compozitorul are pachetele de care are nevoie:

Compozitorul global necesită "fxp / composer-asset-plugin: ~ 1.0.3" A fost actualizat directorul curent în /Users/Jeff/.composer ./composer.json care a fost actualizat Încărcarea depozitelor compozitorului cu informații despre pachete Actualizarea dependențelor ) Nimic de instalat sau actualizat Generarea fișierelor autoload

Instalarea Yii cu șablonul avansat

Apoi, putem instala Yii cu șablonul de proiect avansat. Vom numi aplicația noastră tutorial yiiplus:

$ yiisoft / yii2-app-advanced (2.0.6) Instalarea aplicației yiisoft / yii2-app-advanced (2.0.6) Încărcare din cache Creat proiect în yiiplus Încărcarea depozitelor compozitorului cu informații despre pachete Instalarea dependențelor (inclusiv requ-dev) - Instalarea yiisoft / yii2-compozitorului (2.0.3) Încărcare din cache - Instalarea ezyang / htmlpurifier (v4.6.0) Încărcare din cache - 1.1.0) Încărcare din cache - Instalarea bower-asset / jquery (2.1.4) Încărcare din cache - Instalarea bower-asset / jquery.inputmask (3.1.63) Încărcare din cache - ) Încărcare din cache - Instalarea bower-asset / yii2-pjax (v2.0.4) Încărcare din cache - Instalarea yiisoft / yii2 (2.0.6) Încărcare din cache - Instalarea swiftmailer / swiftmailer / yii2-swiftmailer (2.0.4) Încărcare din cache - Instalarea yiisoft / yii2-codeception (2.0.4) Încărcare din cache - Inst (2.0.5) Încărcare din cache - Instalarea yiisoft / yii2-debug (2.0.5) Încărcare din cache - Instalarea bower-asset / bootstrap (v3.3.5) Încărcare din cache - Instalarea phpspec / php-diff (v1.0.2) Încărcare din cache - Instalarea yiisoft / yii2-gii (2.0.4) Încărcare din cache - Instalarea fzaninotto / faker (v1.5.0 ) Încărcare din cache - Instalarea yiisoft / yii2-faker (2.0.3) Încărcare din cache Fișier de blocare de scriere Generarea fișierelor autoload

Inițializarea aplicației noastre Yii

Acum, să inițializăm aplicația noastră: 

$ cd ~ / Sites / yiiplus $ php init Yii Instrumentul de inițializare a aplicațiilor v1.0 La ce mediu doriți să fie inițializată aplicația? [0] Dezvoltare [1] Producție Alegerea dvs. [0-1 sau "q" pentru a renunța] 0 Inițializați aplicația în mediul "Dezvoltare"? [yes | no] da Începeți inițializarea ... generați backend / config / main-local.php generați backend / config / params-local.php generați backend / web / index-test.php generați backend / config / main-local.php genera consola / config / main-local.php genera consola / config / main-local.php genera consola / config / params-local.php genera frontend / web / index.php genera frontend / web / index.php genera yii genera cheia de validare cookie in backend / config / main-local.php genera cookie cheia de validare in frontend / main-local.php chmod 0777 backend / runtime chmod 0777 backend / web / assets chmod 0777 front / runtime chmod 0777 frontend / web / active chmod 0755 yii chmod 0755 teste / codeception / bin / yii ... initializarea finalizata.

Pregătiți baza de date

Apoi, voi folosi versiunea instalată de PHPMyAdmin instalată de MAMP pentru a crea baza de date:

Clic Crea. Făcând capturi de ecran pentru tutorial, am uitat să fac clic pe crearea și apoi m-am întrebat de ce nu am reușit să migrez baza de date - nu exista încă.

Apoi, editați /common/config/main-local.php pentru a include setările bazei dvs. de date:

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

Apoi, sunteți gata să executați migrarea bazei de date pentru a inițializa aplicația. Aceasta stabilește în principal tabelul pentru gestionarea utilizatorilor:

$ ./yii migrează instrumentul de migrare Yii (bazat pe Yii v2.0.6) Crearea tabelului istoricului migrației "migrare" ... Terminat. Se va aplica o migrație totală nouă: m130524_201442_init Aplicați migrarea de mai sus? (da: nu): da *** aplicând m130524_201442_init> crează tabelul % user ... făcut (timpul: 0.007s) *** aplicat m130524_201442_init (time: 0.022s). 

Configurarea Apache pentru site-urile Front-End și Back-End

Atunci când configurez mediul de dezvoltare sau de producție cu șablonul avansat, trebuie să îndreptăm serverul web către o altă cale de bază, două de fapt. 

În primul rând, vom modifica fișierul hosts pentru a include frontend.dev și backend.dev:

$ mai mult / etc / hosts 127.0.0.1 localhost 127.0.0.1 frontend.dev 127.0.0.1 backend.dev

În mediul meu de dezvoltare cu MAMP, voi lega directorul meu de yiiplus în htdocs al MAMP:

 $ cd / Aplicații / MAMP / htdocs / $ ln -s ~ / Site-uri / yiiplus / Aplicații / MAMP / htdocs / yiiplus

Apoi, voi activa (dezactiva) includerea pentru gazdele virtuale:

$ nano /Applications/MAMP/conf/apache/httpd.conf # Gazdele virtuale includ /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Și configurați căile pentru fiecare dintre numele serverului meu:

$ nano /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf NameVirtualHost *: 8888  ServerName frontend.dev DocumentRoot / Aplicații / MAMP / htdocs / yiiplus / frontend / web /  # Utilizați mod_rewrite pentru sprijinirea URL-ului destul de mare RewriteEngine on # Dacă există un director sau un fișier, utilizați cererea direct RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # În caz contrar, trimiteți cererea la index.php RewriteRule. index.php # utilizează index.php ca index index DirectoryIndex index.php # ... alte setări ...    ServerName backend.dev DocumentRoot / Aplicații / MAMP / htdocs / yiiplus / backend / web /  # Utilizați mod_rewrite pentru sprijinirea URL-ului destul de mare RewriteEngine on # Dacă există un director sau un fișier, utilizați cererea direct RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # În caz contrar, trimiteți cererea la index.php RewriteRule. index.php # utilizează index.php ca index index DirectoryIndex index.php # ... alte setări ...  

Odată ce acest lucru este complet, iată cum va arăta site-ul de la front-end la http://frontend.dev:8888:

Site-ul de back-end vă va solicita să vă conectați - este pentru administratori:

Explorarea managementului utilizatorilor

Acum vă voi îndruma prin caracteristicile principale de gestionare a utilizatorilor ale șabloanelor avansate. Dar mai întâi trebuie să ne asigurăm că primim e-mailuri de la Yii în mediul nostru de dezvoltare.

Configurarea livrării de e-mail

Gestionarea utilizatorilor trimite e-mailuri pentru resetarea parolei, deci trebuie să activați configurația SMTP SwiftMailer a lui Yii. Am de gând să folosesc Mailtrap.io, pe care am explorat-o într-un tutorial anterior, Introducere în Mailtrap: Un server SMTP fals pentru testarea pre-producției de e-mail a aplicației.

Mailtrap oferă un server SMTP fals pentru echipa dvs. de dezvoltare pentru a testa, vizualiza și partaja e-mailurile trimise din mediile de pre-producție și pentru a testa datele cu adevărat, fără riscul de a trimite spam-uri către clienții reali. Pentru multe sarcini de dezvoltare, utilizarea Mailtrap va fi gratuită.

În mod esențial, vă înscrieți pentru Mailtrap și trimiteți toate e-mail-urile de pe e-mail-ul dvs. înainte de producție prin serverul dvs. fals Mailtrap SMTP. Iată o prezentare succintă a videoclipului despre Mailtrap de către Railsware:

Dacă urmați tutorialul și creați un cont Mailtrap, veți vedea inbox-ul demo-ului:

Și când faceți clic pe pictograma Setări din lista de mesaje primite, veți vedea că fiecare intrare Mailtrap are propriile informații despre serverul SMTP:

Cu Yii, actualizez setările SMTP SwiftMailer în /common/config/main-local.php. Iată cum ar putea să arate:

 'mail', 'useFileTransport' => false, 'transport' => ['class' => ' Swift_SmtpTransport ',' host '=>' mailtrap.io ',' username '=>' 29xxxxxxxxxxx72 ',' password '=>' 2c3xxxxxxxxxxf5 ',' port '=>' 2525 ',' encryption ' ],],

Rețineți că dacă nu personalizați viewPath după cum se arată mai sus, este posibil să întâmpinați o eroare în jurul fișierelor șablon de e-mail care nu au fost găsite.

Înregistrarea și înregistrarea

Iată ce arată ecranul de înregistrare de pe front:

Vă va ateriza pe pagina de pornire în starea semnată:

Conectare

Iată ecranul de conectare:

Ti-ai uitat parola

Și iată-l Ti-ai uitat parola ecran:

Dacă cereți o nouă parolă, o veți găsi înăuntru Mailtrap:

Ce urmeaza?

Poate doriți să verificați starea mea Building Your Startup With PHP, care utilizează șablonul avansat al lui Yii2. De asemenea, dacă sunteți interesat să integrați acest tutorial cu utilizatorul Yii2, consultați ghidul pentru integrarea utilizatorului Yii2 cu șablonul avansat și autentificarea Google (în curând).

Sper că v-ați bucurat să învățați despre șablonul de aplicație avansată Yii2. Aș fi curios să vă aud feedback-ul în comentariile despre preferința dvs. față de șablonul de bază.

Urmăriți tutorialele viitoare din programul meu de programare cu seria Yii2, deoarece continuam să scufundăm în diferite aspecte ale cadrului. Salut cererile de teme și teme. Puteți să le postați în comentariile de mai jos sau puteți să ne trimiteți un e-mail pe site-ul meu Lookahead Consulting.

Dacă doriți să știți când vine următorul tutorial Yii2, urmați-mă @reifman pe Twitter sau verificați pagina de instructor. Pagina mea de instructor va include toate articolele din această serie de îndată ce vor fi publicate. 

  • Yii2 Template avansat
  • Yii2 Developer Exchange
  • O colecție de scripturi bazate pe Yii pe CodeCanyon
Cod