Cum de a programa cu Yii2 Explorarea MVC, Formulare și layouts

Ce veți crea

În programarea cu Yii2: Începeți, am creat local Yii2, am construit o aplicație Hello World, am creat un server la distanță și am folosit Github pentru a ne implementa codul. Acest tutorial va acoperi câteva dintre conceptele mai fundamentale ale Yii legate de implementarea cadrului MVC: Modele, Vizualizări și Controlere. De asemenea, vom explora machetele și personalizarea meniurilor de navigare și a elementelor Bootstrap.

Pentru aceste exemple, ne vom imagina că construim un cadru pentru afișarea actualizărilor de stare simple, de ex. propriul mini-Twitter. Cu toate acestea, nu vom merge atât de departe încât să stocăm datele într-o bază de date. Voi salva asta pentru următorul tutorial, care va explora capacitatea de schelă a lui Yii, numită Gii.

Gii automatizează și simplifică tot ceea ce vom face în acest tutorial, dar este important să parcurgeți conceptele de bază și să efectuați manual aceste sarcini cel puțin o dată.

modele

Care este modelul? Wikipedia spune: "A model notifică viziunile și controlorii asociate atunci când a avut loc o schimbare a stării sale. Această notificare permite vizualizărilor să producă ieșiri actualizate, iar controlorii să schimbe setul de comenzi disponibil. "

Pentru mine, modelele reprezintă adesea conceptele despre ceea ce construiesc în lumea "externă". Deci, dacă ne gândim la actualizări de stare, modelul Status va conține toate proprietățile unei actualizări de stare și toate funcțiile sau metodele legate de interogarea sau modificarea unei stări sau a unor stări. 

Cea mai bună practică este de a construi cât mai multe funcționalități și inteligență în modelele dvs. cât puteți. În practica MVC, construiți modele "grele" și controlori și vedeți lumină. Yii oferă câteva caracteristici excelente care sunt specifice tipurilor de lucruri pe care le faceți în dezvoltarea de aplicații web și de aplicații, care simplifică construirea modelului - în special în ceea ce privește formele și bazele de date; cele mai multe dintre acestea vom explora în tutoriale ulterioare.

Să creați modelul nostru de stare. Pentru exemplele noastre de codificare, puteți utiliza depozitul Git. Mă bazez pe ceea ce am creat în tutorialul Noțiuni introductive - l-am marcat aici ca referință. Depozitul Github pentru tutorialul terminat este aici.

Vom crea Status.php în /hello/models/Status.php. Pentru a publica un mesaj de stare, trebuie să colectăm textul mesajului de la utilizator. De asemenea, vom crea un câmp de permisiuni pentru postarea public sau privat.

'Privat', auto :: PERMISSIONS_PUBLIC => 'Public');  funcția publică getPermissionsLabel ($ permisiuni) if ($ permissions == self :: PERMISSIONS_PUBLIC) return 'Public';  altceva return 'Private'; ?>

Observați funcția regulilor - este folosită de validarea formularului Yii pentru a se asigura că utilizatorii introduc informațiile corespunzătoare în fiecare câmp. Yii utilizează JavaScript pentru a valida formularele ca tipuri de utilizatori.

getPermissions () funcția pe care am creat-o va fi utilizată pentru elementele listă derulante ale formularului.

Acum, hai să mergem mai departe pentru a crea un controler pentru a permite utilizatorului să creeze și să vizualizeze actualizările de text.

controlerele

Ce este un controlor? Wikipedia spune: "A controlor pot trimite comenzi către model pentru a actualiza starea modelului (de ex., editarea unui document). De asemenea, poate trimite comenzi la vizualizarea asociată pentru a schimba modul de prezentare al modelului. "Într-o aplicație Web tipică Yii, o cale URL către o pagină invocă un controler pentru a încărca datele pentru pagină utilizând modelul și pentru a reda pagina privelistea. 

Este mai bine să grupați în mod logic funcțiile conexe într-un singur controler. Diferitele metode ale controlerului, numite acțiuni, implementează fiecare funcție. Acestea corespund adesea paginilor specifice. De exemplu, http: // localhost: 8888 / hello / web / status / create va invoca acțiunea de creare a StatusController pe care o vom construi.

Pe măsură ce dezvoltați funcții legate de stare, veți grupa aceste funcții într-un singur statusController.php. Pentru moment, vom construi o funcție de creare.

În / Salut / controlere /, create StatusController.php:

încărcați (// Yi :: $ app-> request-> post ()) && $ model-> validate ()) // date valide primite în $ model return $ this-> render (' > $ model]);  altfel // fie pagina este afișată inițial, fie există o eroare de validare returnare $ this-> render ('create', ['model' => $ model]); ?>

Activitățile de creare a formelor invocă în mod tipic datele modelului și apoi furculița, în funcție de faptul dacă fac parte dintr-o operație POST sau nu. Dacă nu, se va afișa formularul gol. Dacă primesc date postate, acestea sunt validate și procesate. În cazul nostru, aceasta înseamnă continuarea redactării fișierului de vizualizare.

Vizualizări

Ce este o viziune? Wikipedia spune: "A vedere solicită informații de la modelul pe care îl utilizează pentru a genera o reprezentare de ieșire pentru utilizator. "În Yii, vizualizarea utilizează o limbă de șablon asemănătoare cu PHP pentru a face ieșirea paginii în HTML, utilizând datele încărcate de model și livrate de controlor.

Vizitele sunt de obicei situate într-un singur director asociat controlerului asociat, de ex. vizualizările StatusController sunt situate în vizualizari / status pliant.

În Yii, codul de formă este de obicei inclus în ceea ce se numește o vedere parțială. Aceste fișiere sunt numite adesea cu un prefix de subliniere. Acestea sunt menite să fie incluse de alte opinii. Aceasta permite reutilizarea codului de formă real prin paginile de creare și actualizare.

În primul rând, vom face vizualizarea Creare care redă formularul. Apoi, vom crea, de asemenea, o vizualizare Vizualizare pentru a ne afișa actualizarea de stare pe care o afișăm. În tutorialele viitoare, atunci când lucrăm cu o bază de date actuală, stocarea și preluarea datelor, aceasta va funcționa puțin diferit.

Iată un exemplu simplu al nostru /hello/views/status.view.php vizualizați fișierul pentru a afișa datele publicate:

 

Actualizarea statusului

:

text)?>

:

getPermissionsLabel ($ Model-> permisiuni); ?>

Observați cum un fișier de vizualizare este o combinație de cod HTML și PHP. Atunci când controlorul primește datele postate, acesta redă vizualizarea de mai sus, indicând datele pe care le-a trimis utilizatorul.

Dar, acum să vorbim despre formulare și să construim fișierul de vizualizare a formelor de creare.

Formulare

Formularele sunt ceea ce folosim în fiecare zi în dezvoltarea web pentru a colecta date de la utilizator, de multe ori pentru a trimite datele de intrare utilizatorilor către o bază de date. Yii oferă un mare număr de cod helper pentru a simplifica procesul de construire, validare, securizare și postare de date din formulare. În Yii, formele sunt un tip de vedere.

Iată un exemplu de formular pentru crearea unei actualizări de stare:

  câmpul ($ model, 'text') -> textArea (['rows' => '4']) -> etichetă ("Actualizare stare"); ?> câmpul (modelul $, permisiunile) -> dropDownList ($ model-> getPermissions (), ['prompt' => '- Alegeți permisiunile' 
"btn btn-prim"])>>

Widgetul Yii2 ActiveForm este folosit pentru a genera HTML pentru câmpurile noastre de intrare. Observați modul în care lista derulantă invocă modelul Stare getPermissions metodă.

Dacă faceți clic pe butonul Trimiteți, veți reveni la acțiunea de creare a StatusController. Atunci când datele primite sunt primite, acesta redă apoi fișierul view.php în locul fișierului form.php.

Iată cum apare fișierul de vizualizare când este redat cu view.php:

Apoi, să actualizăm bara de navigare globală pentru a include linkuri către formularul de creare a stării.

aspecte

Aspecturile sunt șabloanele pentru majoritatea elementelor exterioare, repetate ale unui site web, cum ar fi documentul HTML, antetul, bara de navigare și subsolul. Deoarece acestea sunt comune celor mai multe pagini ale unui site web, ele sunt construite odată în aspect și nu se repetă peste tot în cod.

Dacă te uiți la \ Salut \ opinii \ layout \ main.php, puteți vedea structura aspectului exterior:

 beginPage ()?>       <?= Html::encode($this->titlu)?> cap ()?>   beginBody ()?> 
'My Company', 'brandUrl' => Yii :: $ app-> homeUrl, 'opțiuni' => ['class' => 'navbar-inverse navbar-fix-top',]; echo Nav :: widget (['opțiuni' => ['class' => 'navbar-nav navbar-right'], 'items' => [[ '/' / '/']], ['label' => 'Contact', 'url' => '/ site / contact']], Yii :: $ app-> user-> isGuest? ['label' => => 'Logout ('. Yii :: $ app-> user-> identitate-> nume de utilizator.) ',' Url '=> [' / site / logout '],' linkOptions '=> '=>' post ']],],]); NavBar :: end (); ?>
isset ($ this-> params ['breadcrumbs'])? $ this-> params ['breadcrumbs']: [],])?>

© Compania mea

endBody ()?> endPage ()?>

Vizualizările reprezintă, în cea mai mare parte, corpurile de pagini interioare ale unui site web - ce se întâmplă între antetul și bara de navigare și începutul subsolului. Ele sunt redate atunci când layout-ul ecou conținut $:

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

Yii vă permite să creați mai multe layout-uri pe aplicație, deși acest lucru nu este întotdeauna necesar. Depinde de cererea dvs. Controlerele oferă o configurație implicită și puteți să o înlocuiți pentru orice acțiune dată. Dacă controlorii dvs. grupează în mod logic activități conexe, este probabil ca interfața de utilizator să utilizeze același aspect pentru toate acțiunile din cadrul unui controler.

Acum, să actualizăm bara de navigare pentru a include un meniu Status cu o acțiune "create". Din moment ce Yii2 folosește Bootstrap pentru layouts și stiluri, trebuie doar să-i spunem să creeze un dropdown Bootstrap.

Actualizați Nav :: widget pentru a avea o matrice imbricata:

 echo Nav :: widget (['opțiuni' => ['class' => 'navbar-nav navbar-right'], 'items' => [[ '/' / '/' / '/' / '/'), ' ], ['label' => 'Despre', 'url' => ['/ site / about']] '], Yii :: $ app-> user-> isGuest? [' Label '=>' Login ',' url '=> 'Link-uri' => ['data-method' => 'nume') ',' url '=> [' ]],],]); 

Iată ce ar trebui să vedeți:

Ce urmeaza?

Acum, că știți puțin despre modul în care arhitectura MVC a lui Yii funcționează în practică, inclusiv modele, vizualizări, controale, formulare și machete, vom crea o schemă de baze de date pentru stadii și vom folosi generatorul de schele Yii, Gii, pentru a construi toate acestea automat ne. Lucrurile vor începe să se miște un pic mai repede.

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 Tuts +. Pagina mea de instructor va include toate articolele din această serie de îndată ce vor fi publicate.

Link-uri conexe

  • Site-ul web Yii
  • Introducere în Cadrul Yii (Tuts +) 
  • Programarea cu Yii2: Noțiuni de bază (Tuts +)
  • Alte exemple de dezvoltatori gratuite și Open Source Yii de autor
Cod