Folosirea unei extensii implica urmatorii trei pasi:
extensions/xyz
din
directorul de baza al aplicatiei,
unde xyz
este numele extensiei.Fiecare extensie are un nume care o identifica unic fata de celelalte extensii.
Daca extensia are numele xyz
, putem folosi oricand alias-ul de cale
application.extensions.xyz
pentru a localiza directorul de baza care contine toate
fisierele extensiei xyz
.
Fiecare extensie are cerinte specifice in ce priveste importarea, configurarea si folosirea. In cele ce urmeaza, facem un sumar al scenariilor obisnuite de folosire, urmand categorisirea descrisa in sectiunea Generalitati despre extensii.
Pentru a folosi o componenta de aplicatie,
trebuie sa modificam fisierul de configurare a aplicatiei
prin adaugarea unei noi intrari la proprietatea components
, in felul urmator:
return array(
// 'preload'=>array('xyz',...),
'components'=>array(
'xyz'=>array(
'class'=>'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// alte configuratii de componente
),
);
Apoi, putem accesa componenta oriunde in cod, folosind Yii::app()->xyz
. Componenta
la fi creata prin abordarea lazy (adica, ea va fi creata atunci cand este accesata prima data).
Putem specifica incarcarea ei in proprietatea preload
, pentru a fi creata automat o data cu aplicatia.
Widget-urile sunt cel mai folosite in view-uri.
Daca avem o clasa widget XyzClass
(care apartine extensiei xyz
), putem s-o folosim
intr-un view in felul urmator:
// widget care nu are nevoie de continut body $this->widget('application.extensions.xyz.XyzClass', array( 'property1'=>'value1', 'property2'=>'value2')); // widget care poate contine un body $this->beginWidget('application.extensions.xyz.XyzClass', array( 'property1'=>'value1', 'property2'=>'value2')); ...continutul body al widget-ului... $this->endWidget();
Action-urile sunt folosite de un controller
pentru a raspunde diverselor cereri din partea utilizatorilor web. Daca avem o clasa action XyzClass
(care apartine extensiei xyz
), putem s-o folosim prin suprascrierea metodei CController::actions
din clasa controller-ului nostru:
class TestController extends CController
{
public function actions()
{
return array(
'xyz'=>array(
'class'=>'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// alte action-uri
);
}
}
Apoi, action-ul poate fi accesat prin routa test/xyz
.
Filtrele sunt de asemenea folosite de catre un controller.
In principal asigura posibilitatea de a executa un cod inainte si dupa procesarea unei cereri din
partea utilizatorului web atunci cand este tratata de un action.
Daca avem o clasa filtru XyzClass
(care apartine extensiei xyz
), putem s-o folosim
prin suprascrierea metodei CController::filters din clasa controller-ului nostru:
class TestController extends CController
{
public function filters()
{
return array(
array(
'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// alte filtre
);
}
}
In codul de mai sus, putem sa folosim operatorii +
si -
in primul element al array-ului
pentru a aplica filtrul doar unor anumite action-uri. Pentru mai multe detalii, putem vedea
sectiunea despre CController din documentatie.
Un controller asigura un set de action-uri care pot fi cerute de catre utilizatorii web. Pentru afolosi un controller al unei extensii, trebuie sa configuram proprietatea CWebApplication::controllerMap din fisierul care contine configurarea aplicatiei:
return array(
'controllerMap'=>array(
'xyz'=>array(
'class'=>'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// alte controller-e
),
);
Apoi, un action a
din controller poate fi accesat prin
ruta xyz/a
.
Un validator este folosit in special intr-o clasa model
(una care este derivata fie din CFormModel fie din CActiveRecord).
Daca avem o clasa validator XyzClass
(care apartine extensiei xyz
), putem s-o folosim
prin suprascrierea metodei CModel::rules din clasa modelului nostru:
class MyModel extends CActiveRecord // sau CFormModel
{
public function rules()
{
return array(
array(
'attr1, attr2',
'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// alte reguli de validare
);
}
}
O comanda de consola a unei extensii de obicei imbunatateste
unealta yiic
prin adaugarea unei noi comenzi. Daca avem o clasa cu o comanda de consola
XyzClass
(care apartine unei extensii xyz
), putem s-o folosim prin modificarea fisierului
de configurare al aplicatiei de consola:
return array(
'commandMap'=>array(
'xyz'=>array(
'class'=>'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// alte comenzi
),
);
Apoi, putem folosi unealta yiic
care va avea incorporata noua comanda xyz
.
Nota: O aplicatie de consola de obicei foloseste un fisier de configurare care este diferit decat cel folosit de o aplicatie Web. Daca o aplicatie este creata folosind comanda
yiic webapp
, atunci fisierul de configurare pentru aplicatia de consolaprotected/yiic
esteprotected/config/console.php
, in timp ce fisierul de configurare pentru aplicatia Web esteprotected/config/main.php
.
Un modul de obicei este format din mai multe fisiere cu clase si este un mix format din tipurile de extensii de mai sus. De aceea, ar trebui sa urmam instructiunile corespunzatoare pentru a folosi un modul.
Pentru a folosi o componenta generica, mai intai trebuie sa includem fisierul care contine clasa sa:
Yii::import('application.extensions.xyz.XyzClass');
Apoi, putem crea o instanta a clasei, putem sa ii configuram proprietatile si sa ii apelam metodele. De asemenea, putem sa o derivam pentru a crea noi clase derivate.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.