cadru de aplicare - - Widgets un ghid complet pentru a Yii 2

Widget-urile sunt blocuri de construcție reutilizabile folosite în reprezentări pentru crearea de elemente complexe și configurabile de interfață cu utilizatorul în abordarea orientată pe obiecte. De exemplu, widget-ul de selecție data (Selector de date) vă permite să generați o interfață interactivă pentru a selecta o dată, oferind utilizatorilor o modalitate convenabilă de aplicare pentru acest tip de date de intrare. Tot ce trebuie să conectați widget-ul - acest lucru este de a adăuga următorul cod în vizualizarea:

Yii a inclus un număr mare de widget-uri, cum ar fi: formă activă. meniu. widget-uri jQuery UI. widget-uri Twitter Bootstrap. În continuare vor fi prezentate informații de bază despre widget-uri. Pentru informații privind utilizarea unui anumit widget, consultați documentația clasei corespunzătoare.

Utilizarea Widgets

În principal, widget-urile utilizate în punctele de vedere. Pentru a utiliza widget-ul într-o vizualizare, pur și simplu apel metoda Yii \ de bază \ Widget :: widget-ul (). Metoda are o serie de opțiuni pentru a inițializa widget-ul, și returnează rezultatul pronunțării ei. De exemplu, următorul cod adaugă un widget pentru a selecta o dată care este configurat să utilizeze limba română ca o interfață widget și stocarea datelor de intrare în modelul de $ modelul atribut FROM_DATE.

Unele widget-uri pot fi conținut intern, care ar trebui să fie plasate între apelurile de metode Yii \ de bază \ Widget :: începe () și Yii \ bază \ Widget :: end (). De exemplu, pentru a genera forma de intrare, următorul fragment de cod utilizează widget Yii \ widgeturile \ ActiveForm. Acest widget va genera o deschidere și închidere tag-uri

plasează începe un apel () și sfârșitul (respectiv). Astfel, conținutul situate între apeluri ale acestor metode este afișată fără nici o schimbare.

Rețineți că, în contrast cu metoda Yii \ de bază \ Widget :: widget-ul (). care returnează rezultatul redare, metoda Yii \ baza \ Widget :: începe () returnează o copie widget, care poate fi folosit în continuare pentru formarea conținutului său interior.

Setare valori prestabilite globale

Valoarea implicită globală pentru un anumit tip de widget poate fi configurat prin container DI:

Creați un widget

Pentru a crea un widget, ar trebui să moștenesc clasa Yii \ baza \ Widget și suprascrie metodele Yii \ de bază \ Widget :: init () și / sau Yii \ bază \ Widget :: run (). De obicei, metoda init () trebuie să conțină codul care efectuează proprietăți de widget normalizare și termen metoda () - cod care returnează un rezultat de redare widget. redare rezultat poate fi redat în mod direct de structura „ecou“ sau a revenit la linia de run ().

În exemplul următor, widget HelloWidget HTML-codeaza și afișează conținutul alocat proprietății mesajului. În cazul în care proprietatea specificată nu este setat, widget-ul, ca șirul de afișare implicit „Hello World“.

Pentru a utiliza acest widget, trebuie doar să adăugați la vizualizarea codul de mai jos:

Mai jos este varianta HelloWidget widget. care primește conținutul, apelurile înrămate începe () și final (). ea și ieșiri HTML codifică.

După cum puteți vedea, în metoda init () este activată tampon de ieșire PHP, astfel încât toate apelurile de ieșire între init () și run () pot fi interceptate, prelucrate și a revenit la termen ().

Info: Atunci când apelați o metodă Yii \ bază \ Widget :: începe () este creată o nouă instanță a widget-ului, în timp ce metoda de apel init () va avea loc imediat după restul codului în constructorul widgetului. Atunci când metoda este numită Yii \ bază \ Widget :: end (). run () metodă se numește. și final) metoda (se va afișa valoarea returnată acestora.

Următorul fragment de cod prezintă un exemplu de utilizare a unui HelloWidget exemplu de realizare modificat:

În unele cazuri, widget-ul poate fi necesar pentru a aduce un bloc mare de conținut. Și, deși conținutul poate fi integrat direct în metoda run (). este mai de folos să-l pună în supunere și apel metoda Yii \ de bază \ Widget :: render () să-l facă. De exemplu,

În mod implicit, fișierele de widget-uri trebuie să fie în directorul / opinii WidgetPath. în cazul în care WidgetPath - director care contine fisierul clasei widget-ului. Astfel, în exemplul de mai sus, widget va fi utilizat de către fișierul vizualizare @ app / componente / views / hello.php. în același fișier de timp cu clasa widget este situat în @ app / componente. Pentru a schimba directorul, care conține reprezentări ale fișierelor pentru un widget ar trebui să suprascrie Yii \ de bază \ Widget :: getViewPath ().

Cele mai bune practici

Widget-urile sunt abordări orientate obiect pentru a reutiliza codul UI.

Când creați un widget, ar trebui să adere la principiile de bază ale conceptului MVC. În general, logica de bază ar trebui să fie plasat în clasa widget-ul, partajarea cu codul responsabil pentru aspectul în prezentare.

În cazul în care widget-ul conține nici o logică, conține doar codul responsabil pentru afișarea markup, este puțin diferit de prezentare. De fapt, singura diferență este că widget-ul este o separat și ușor să se răspândească de clasă, în timp ce ideea - este un script PHP normal, care este potrivit pentru a fi utilizat numai într-o anumită aplicație.