Cum se programează cu Yii2 Noțiuni de bază

Ce veți crea

Dacă întrebiți, "ce este Yii?" consultați tutorialul meu anterior: Introducere în cadrul Yii, care analizează beneficiile lui Yii și include o prezentare generală a ceea ce este nou în Yii 2.0, lansat la 12 octombrie 2014. 

Acest tutorial vă va ajuta să instalați Yii 2.0, să vă configurați mediul de dezvoltare locală, să construiți o aplicație Hello World, să configurați mediul de producție de la distanță pentru găzduirea și implementarea codului dvs. dintr-un depozit GitHub.

Instalarea Yii 2.0

Documentație

Puteți găsi aici instrucțiuni de instalare detaliate; Vă voi trece prin elementele de bază pentru un mediu de dezvoltare tipic Mac OS X. Yii 2.0 are un ghid definitiv (PDF) și o referință de clasă care acoperă fiecare detaliu al lui Yii. CA

Instalarea Compozitorului

Yii2 cere compozitorului, un manager de dependență popular pentru PHP. Dacă nu aveți deja instalat Compozitor, procedați în felul următor:

curl-uri http://getcomposer.org/installer | php mv compozitor.phar / usr / local / bin / compozitor

Instalarea Yii2

Apoi, utilizați Composer pentru a instala Yii2. Cererea de instalare necesită utilizarea propriilor dvs. acreditări pentru contul Github; înscrie-te dacă nu ai un cont.

Să numim acest prim proiect, "salut":

cd ~ / Site compozitor global necesită "fxp / composer-asset-plugin: 1.0.0-beta2" compozitor create-project - pre-dist yiisoft / yii2-app-basic

Yii2 oferă două șabloane de instalare diferite, în funcție de tipul de aplicație pe care o dezvoltați: bază și avansată. Pentru acest tutorial, vom folosi aplicația de bază care este instalată în mod implicit. Șablonul pentru aplicații avansate oferă puncte de acces pentru o aplicație web mai avansată, cum ar fi un blog WordPress, tabloul de bord administrativ și activități cron de fundal.

Configurarea mediului de dezvoltare locală

Folosesc gratuit MAMP open source pentru OS X pentru dezvoltarea LAMP. Asigurați-vă că MAMP rulează, iar serverele de web și de baze de date sunt active. Apoi, creați un symlink pentru MAMP la dvs. Site-uri directorul de aplicații:

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

Apoi, vizitați http: // localhost: 8888 / hello / web. Ar trebui să vedeți șablonul de aplicație de bază Yii2 care rulează cu Bootstrap 3.x. 


Această pagină va stimula probabil dezvoltatorii Yii 1.1 care nu au avut suport preconfigurat pentru cea mai recentă versiune de Bootstrap, un cadru remarcabil CSS care răspunde la o sursă deschisă, care este preluat de un număr destul de mare de web.

Yii Application Architecture

Una dintre cele mai importante caracteristici ale cadrului Yii este aceea că oferă un model de vizualizare a contului pentru PHP. Nu numai că aceasta oferă un mediu de programare mai structurat și un cod mai ușor de înțeles, simplifică o serie de lucruri greu de făcut în PHP, cum ar fi securitatea și generarea de coduri automate. De asemenea, face codul nostru mai ușor de extins și mai reutilizabil.

Cu o aplicație Yii, direcționăm tot traficul către un singur fișier: /web/index.php fişier. Acest fișier încorporat încarcă Yii, orice dependență și apoi execută aplicația.

alerga(); 

În mod implicit, aceasta este metoda Index în /controllers/SiteController.php:

funcția publică funcțiaIndex () return $ this-> render ('index'); 

În general, controlorii sunt plini de metode, dar cu un cod minim ca mai sus. Controlerele gestionează accesul, modelele de levier și oferă vederi. Cea mai mare parte a inteligenței ar trebui să fie încorporată în modelele dvs. și opiniile ar trebui să producă, în general, operațiuni de șablon relativ simple.

Implicit, Yii va reda /views/layouts/main.php în jurul vizualizării indexului dvs. în /views/site/index.php. main.php aspect oferă structura HTML și CSS la pagină, de ex. bara de instrumente și zona de conținut. Interior main.php, veți vedea un scurt apel către conținut:

isset ($ this-> params ['breadcrumbs'])? $ this-> params ['breadcrumbs']: [],])?>

Acea conținut $ variabila va fi înlocuită cu codul generat de la /views/site/index.php, care în prezent este un cod HTML static care generează Felicitări! pagina de mai sus.

Clădire Hello World!

Activarea URL-urilor Destul de multe

În primul rând, permiteți-i pe URL-urile frumoase ale lui Yii2 mod_rewrite. Pe pagina de pornire Yii, dacă faceți clic pe Despre opțiunea de meniu, URL-ul va fi ceva asemănător http: // localhost: 8888 / hello / web / index.php? r = site% 2Fabout. Am dori să-l schimbăm la http: // localhost: 8888 / hello / web / site / about.

config subdirectorul include configurații de mediu pentru aplicațiile web și console, precum și setările viitoare ale bazei de date. Editați | × /config/web.php a adauga urlManagement la aplicația web curentă. Adăugați următoarele urlManager secțiune din matricea componentelor:

 'componente' '=> [// ...' urlManager '=> [' showScriptName '=> false,' enablePrettyUrl '=> true], // ...' request '=>

Apoi, creați un .htaccess fișier în interiorul /web unde primarul index.php fisierul exista:

RewriteEngine pe # Dacă există un director sau un fișier, utilizați-l direct RewriteCond% REQUEST_FILENAME! -F RewriteCond% REQUEST_FILENAME! -D # În caz contrar, trimiteți-l la index.php RewriteRule. index.php

Asigura-te mod_rewrite funcționează local pe MAMP; dacă nu, verificați acest ghid de depășire a stivei.

În browserul dvs., accesați această adresă URL: http: // localhost: 8888 / hello / web / site / about. Ar trebui să vedeți aplicația Yii Despre pagină și să faceți clic pe alte opțiuni de meniu ar trebui să aducă destul de URL-uri.

Construirea lumii Say Hello! Acțiune

Apoi vom adăuga o acțiune de controler numită Spune să repetăm ​​un mesaj țintă ales de noi. În /controllers/SiteController.php, adăugați următoarea acțiune:

funcția publică funcția Say ($ target = 'Lumea') return $ this-> render ('say', ['target' => $ target]);  

Aceasta va căuta un parametru de adresare URL denumit țintă pentru a econa pe ecran. Dacă nu există niciun parametru țintă, se va spune repetat "Lumea". În acțiunea Yii, acțiunile sunt definite ca o metodă denumită cu prefixul "acțiune" urmat de numele acțiunii. In acest SiteController clasa, folosim funcția publică funcțiaSpune. Yii folosește prefixul "acțiune" pentru a diferenția metodele de acțiune de celelalte metode.

Comportamentul implicit al metodei de redare va căuta un fișier în vizualizari / ControllerID / ViewName.php. Deci, în / Vizualizari / site /, creeaza o say.php Vezi fișierul:

 

Salut

Bine ați venit la aplicația demonstrativă Yii2.

Acesta este fișierul de vizualizare a șabloanelor pentru a repeta eticheta HTML statică h1 cu Salut urmată de variabila țintă. Notă: Codificăm variabila destinație pentru a securiza argumentul parametrilor URL de la codul rău intenționat.

Dacă vizitați urlul, http: // localhost: 8888 / hello / web / site / say? Target = Tuts% 20Readere, ar trebui să vedeți acest lucru:

Acesta este un exemplu foarte bun al modelului Yii2 Model View Controller. Puteți citi o descriere mai detaliată a demonstrației Hello World și a YV2 MVC aici.

Acum, să ne pregătim aplicația cu GitHub și să o implementăm pe un server de producție. 

Configurarea mediului de găzduire de la distanță

Aplicația de bază Yii ar trebui să ruleze bine din cutie cu Apache sau un Nginx, voi oferi instrucțiuni pentru Apache și puteți găsi instrucțiuni pentru Nginx aici.

Creați un depozit la GitHub

Odată ce am creat un șablon de aplicație Yii, creez un depozit la Github:

Notă: Este puțin mai simplu să copiați și să lipiți inițial Yii2 .gitignore de la GitHub la fișierul local ~ / Sites / hello / .gitignore, mai degrabă decât să creați site-ul cu acesta de la distanță și să îl îmbinați local, dar fie o abordare este bine.

Am folosit mai frecvent aplicația Mac OS X GitHub, dar de asemenea puteți utiliza linia de comandă pentru a inițializa depozitul. Mai jos, urmăresc instrucțiunile pentru adăugarea unui proiect existent la GitHub utilizând linia de comandă (înlocuiți "youraccount" cu numele contului dvs. GitHub):

cd ~ / Site-uri / hello git init git comite -m "primul comitet de hello world for yii2" git remote adăugați origine [email protected]: youraccount / hello.git git push -u master de origine

Configurați un site Apache pe serverul dvs.

Dacă nu aveți deja un server LAMP sau o instanță cloud, urmați instrucțiunile generale de instalare Ubuntu pentru a începe. Odată ce aveți adresa IP, modificați înregistrările DNS pentru a avea un punct de înregistrare pe serverul dvs.. 

yourdomain.com A 192.161.234.17

Apoi, conectați-vă la serverul dvs. fie prin adresa IP, fie prin numele de domeniu:

ssh [email protected]

Actualizați configurația, instalați Git, activați mod_rewrite pentru Apache și mcrypt pentru PHP:

sudo apt-get actualizare sudo apt-get upgrade sudo a2enmod rescrie php5enmod mcrypt

Configurați accesul GitHub pe serverul de la distanță

Acum, vom seta un utilizator pentru a trage codul de la Github care poate fi deservit de Apache. Mai întâi, instalați git pe serverul dvs..

sudo apt-get instalați git 

Apoi, vom crea un grup pentru www, vom adăuga www-date și utilizatorii GitHub și le vom acorda dreptul de proprietate asupra directoarelor noastre web.

adduser github adăuga grup www adduser github www adduser www -data www chown -R: www / var / www chmod + s -R / var / www chmod -vR g + w / var / www /

Apoi, vom crea o cheie pentru utilizatorul pe care îl împărtășim cu GitHub pentru păstrarea codului în sincronizare:

su github ssh-keygen -t rsa -C "[email protected]" ieșire pisică /home/github/.ssh/id_rsa.pub

Veți vedea ceva de genul acesta, pe care trebuie să îl copiați și să îl inserați pe GitHub.com:

Accesați pagina Setări pentru depozitul dvs. de soundub GitH sub chei și adăugați această cheie în depozitul dvs.:

După ce o adăugați, o veți vedea afișată aici:

În sfârșit, puteți clona copacul pe serverul de producție:

git clone [email protected]: youraccount / hello.git / var / www / salut

Dacă accesul la GitHub este corect configurat, acesta ar trebui să arate astfel (dacă nu, examinați acest lucru):

Pe măsură ce extindeți codul de bază cu această serie de tutori și împingeți actualizările de la mașina dvs. locală, veți putea să le sincronizați pe serverul dvs. de producție de la distanță, cu git pull. Acest lucru este mai simplu decât trasarea manuală a unui cod de sincronizare sau de sincronizare - și va deveni mai utilă pe măsură ce seria tutorial continuă cu module ulterioare.

Creați configurația site-ului Apache

Creați un fișier de configurare a site-ului Apache:

nano /etc/apache2/sites-available/hello.conf

Personalizați această configurație pentru numele dvs. de domeniu:

 ServerName yourdomain.com # Setați root-ul documentului pentru a fi "basic / web" DocumentRoot "/ var / www / hello / 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   

Activați site-ul:

a2ensite hello.conf serviciu a2dissite 000-default.conf apache2 reload

Vizitați http://yourdomain.com/site/say?target=World! și ar trebui să vedeți că aplicația dvs. rulează pe domeniul dvs. fără bara de instrumente de depanare Yii2 din partea inferioară, astfel:

Felicitări! Suntem gata să explorăm caracteristici sofisticate în Yii2. Dacă doriți să știți când vine următorul tutorial Yii2, urmați @tutspluscode sau @reifman pe Twitter sau verificați pagina autorului meu. Pagina autorului meu va include toate articolele din această serie cât mai curând imediat după publicare.

Dacă aveți întrebări sau corecții în acest tutorial, vă rugăm să le postați în comentarii.

Link-uri conexe

  • Site-ul web Yii
  • Introducere în Cadrul Yii (Tuts +) 
  • Alte exemple de programare gratuite și open source Yii de autor
  • Scripturi PHP utile pe Envato Market
Cod