Un view este un fisier PHP care contine in principal elemente ale interfetei cu utilizatorul. Poate contine instructiuni PHP, dar este recomandat ca aceste instructiuni sa nu schimbe modelele de date si sa fie relativ simple. In spiritul de a mentine separarea intre programare si prezentare, bucatile mari de programare ar trebui puse in controller sau in model, nu in view.
Un view are un nume care este folosit pentru a indentifica fisierul atunci cand trebuie generat view-ul.
Numele unui view este acelasi cu numele fisierului view. De exemplu, view-ul edit
se refera la
un fisier view cu numele edit.php
. Pentru a genera un view, apelam CController::render()
cu numele view-ului. Metoda va cauta fisierul view corespunzator in directorul protected/views/ControllerID
.
In fisierul view, putem accesa instanta controller-ului folosind $this
. Putem astfel sa primim
informatii
din afara view-ului, in special proprietatile controller-ului, prin evaluarea $this->propertyName
in interiorul view-lui.
Putem de asemenea sa folosim metoda de a trimite
date view-ului inainte de generarea lui:
$this->render('edit', array(
'var1'=>$value1,
'var2'=>$value2,
));
Atfel, metoda render() va extrage al doilea array de parametri. Acesti parametri
vor deveni variabile in interiorul view-ului. Le vom putea accesa ca variabile locale, $var1
si $var2
.
Layout-ul este un view special. Este folosit pentru a crea un container unic pentru view-uri. Poate sa contina portiuni ale interfetei utilizator care sunt la fel in mai multe view-uri. De exemplu, un layout ar putea contine portiuni header si footer si sa includa la mijloc continutul view-ului:
......aici se defineste header-ul...... echo $content; ......aici se defineste footer-ul......
$content
contine rezultatul generat pentru un view.
Layout este implicit aplicat atunci cand se apeleaza render().
Implicit, fisierul view protected/views/layouts/main.php
este folosit ca layout.
Poate fi schimbat prin modificarea ori a CWebApplication::layout
ori a CController::layout. Pentru a genera un view fara sa ii aplicam un layout,
folosim renderPartial().
Un widget este o instanta a clasei CWidget sau a unei clase derivate. Este o componenta creata in special pentru scopuri de prezentare. Widget-urile sunt incluse de obicei intr-un fisier view pentru a genera unele interfete utilizator complexe, dar de sine statatoare. De exemplu, widget-ul calendar poate fi folosit pentru a genera un calendar complex. Widget-urile ajuta la o mai buna separare si reutilizare a codului din interfata utilizator.
Pentru a folosi un widget intr-un fisier view, facem urmatoarele:
$this->beginWidget('path.to.WidgetClass'); ...continut body care poate fi capturat de catre widget... $this->endWidget();
sau
$this->widget('cale.catre.WidgetClass');
A doua metoda este folosita atunci cand widget-ul nu necesita vreun continut body.
Pentru a le customiza comportamentul, widget-urile pot fi configurate prin setarea valorilor initiale ale proprietatilor atunci cand se apeleaza CBaseController::beginWidget sau CBaseController::widget. De exemplu, atunci cand folosim widget-ul CMaskedTextField, am vrea sa specificam un mask care va fi folosit. Putem face acest lucru transmitand un array cu acele proprietati si cu valorile lor initiale dupa cum urmeaza:
$this->widget('CMaskedTextField',array( 'mask'=>'99/99/9999' ));
Ca de obicei, array-ul contine perechi key-value. Key contine numele proprietatii, iar value contine valoarea initiala a proprietatii respective.
Pentru a defini un nou widget, derivam CWidget si suprascriem metodele init() si run():
class MyWidget extends CWidget
{
public function init()
{
// aceasta metoda este apelata de catre CController::beginWidget()
}
public function run()
{
// aceasta metoda este apelata de catre CController::endWidget()
}
}
La fel ca un controller, un widget poate de asemenea avea un view personal.
Implicit, fisierele view ale widget-urilor se gasesc in subdirectorul
views
al directorului care contine fisierul clasei widget-ului.
Aceste view-uri pot fi generate prin apelarea CWidget::render(), la fel ca in controller.
Singura diferenta este ca la view-ul unui widget nu ii este aplicat nici un layout.
View-urile sistem se refera la view-urile folosite de platforma Yii pentru a afisa informatii despre erori. De exemplu, atunci cand un utilizator cere un controller sau un action inexistent, Yii va genera o exceptie, prin care se explica eroarea. Yii afiseaza exceptia folosind un view sistem specific.
Denumirea view-urilor sistem se face dupa unele reguli.
Numele de genul errorXXX
se refera la view-uri pentru afisarea CHttpException
cu codul de eroare XXX
. De exemplu, daca este generat CHttpException cu codul de eroare
404, atunci va fi afisat view-ul error404
.
Yii furnizeaza un set de view-uri sistem implicite. Acestea sunt localizate in
directorul framework/views
. Pot fi customizate prin crearea unor fisiere view cu acelasi nume
dar in directorul protected/views/system
.
Signup or Login in order to comment.