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.
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.
Să începem să instalăm șablonul avansat cu Yii2. Putem urma instrucțiunile de la proiectul pentru șabloane avansate pe GitHub.
Î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
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
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.
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).
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 *: 8888ServerName 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:
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.
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.
Iată ce arată ecranul de înregistrare de pe front:
Vă va ateriza pe pagina de pornire în starea semnată:
Iată ecranul de conectare:
Și iată-l Ti-ai uitat parola ecran:
Dacă cereți o nouă parolă, o veți găsi înăuntru Mailtrap:
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.