Metode de personalizare și styling widget din Yii
Cadrul Yii Inclus primi inițial un set de widget-uri Zii. Programatorii familiarizați cu o abundență de oportunități pentru widget-uri styling încep să personaliza, dar nu ajung imediat căile convenabile de stil. În această rețetă, vom încerca să reducă la minimum, sub forma de un fel de cod dimensiunea copiei.
Valorile date mai multe etape ulterioare se aplică standardului (CLinkPager. CGridView. CListView. CDetailView. CActiveForm) și propriile widget-uri. Ne vom uita la un exemplu numai cu grilă și padzhinatorom.
Efectuarea CGridView și CLinkPager
Deci, padzhinator poate fi stil folosindu-l ca un special separat:
și „nu înseamnă“ așa cum este utilizat în compoziția CGridView. CListView:
Am arătat la el mai multe opțiuni, și anume de a adăuga „pomi de Crăciun“ la link-urile de inscripții.
De obicei, stilul nu se opreste aici. deoarece prelucrarea de widget-uri pentru design personalizat este necesar pentru a schimba modelele lor de prescriere și reguli CSS. De exemplu, pentru a aduce două padzhinatora de mai sus și mai jos lista de articole (care nu utilizează CListView), trebuie să scrie în prezentare, după cum urmează:
Clasa CLinkPager. desigur, are alte opțiuni. dar nu le vom atinge.
Să ne acum CGridView. Lăsați grila standard pentru a afișa mesaje blog listă arată astfel:
Când vom da regulile necesare în codul de apel, acesta va arata monstruos:
Aici suntem, doar, a redefinit unele template-uri și widget-uri au indicat fișierele lor de stil.
În general, fiecare afiseaza grilele de felul lor, dar nu este atât de important.
Problema cu această abordare directă a stilizare că, în cazul mai multor controlere zeci de sincronizare CRUD apare un inconvenient. Toate aceste provocări au nevoie pentru a copia widget-ul în forma sa originală, în toate punctele de vedere, și atunci când modificați stilul de a modifica codul în fiecare.
De asemenea, vom avea o problemă în proiectarea de al doilea site, pentru că acolo nu putem folosi aceleași fișiere de vizualizare pentru un design diferit. Desigur, putem redefini toate noțiunile din linia de subiect al noului site, dar nu este opțiune foarte economic. Deci, încercați să găsească alternative.
Override widget-uri prin moștenire
CGridView și toate celelalte componente ale cadrului reprezintă o clasă obișnuită cu câmpurile publice, astfel încât să putem otnasledovatsya cu ușurință de original și suprascrie valorile acestor câmpuri în mod implicit.
LinkPager a crea o clasă și fast forward transmise la apelarea valorii widget în interiorul său:
Aici avem, de exemplu, să ia foaia de stil din tema curentă. Am arătat în constructor, ca, spre deosebire de Java sau ActionScript, limbajul PHP nu permite câmpuri pentru a inițializa expresia calculat, adică, nu permite să scrie ceva de genul:
Noua clasă va pune, de exemplu, în / componentele protejate. Acum, în loc de CLinkPager poate folosi LinkPager nostru:
Și toate acestea se face nu prin concatenarea zeci de opțiuni în fiecare vizualizare și o simplă schimbare a numelui clasei.
Acum, pentru a schimba stilul de toate widget-uri pentru al doilea site trebuie doar pentru a schimba valoarea opțiunilor în clasă sau GridView GridView. Nici fișier nu trebuie să fie schimbat.
Theming prin Skins
Redefinirea clasele standard - un instrument foarte flexibil, dar numai folosi pentru a schimba stilul de widget-ului este irațional, deoarece acest cadru prevede o oportunitate diferită.
Descrierea poate fi găsită în articolul pe theming din ghidul oficial. Yii prevede widget-uri nu numai redefinind reprezentările standard dar, de asemenea, o redefinire de opțiuni.
Prima abordare implică parametri care specifică în fișierul de configurare:
Dar, în acest caz, trebuie să ne înregistrați manual modul