Menggunakan ekstensi biasanya berkaitan dengan tiga langkah berikut:
extensions/xyz
pada
direktori basis aplikasi,
di mana xyz
adalah nama ekstensi.Setiap ekstensi memiliki nama yang secara identitas unik diantara semua ekstensi.
Ekstensi diberi nama xyz
, kita dapat menggunakan alias path
application.extensions.xyz
untuk menempatkannya pada basis direktori yang berisi
semua file xyz
.
Ekstensi yang berbeda memiliki persyaratan mengenai pengimporan, konfigurasi dan pemakaian. Selanjutnya, kita meringkas skenario pemakaian umum mengenai ekstensi, berdasarkan pada kategorisasinya seperti dijelaskan dalam tinjauan.
Untuk menggunakan komponen aplikasi,
kita perlu mengubah konfigurasi aplikasi
lebih dulu dengan menambahkan entri baru pada properti components
, seperti berikut:
return array(
// 'preload'=>array('xyz',...),
'components'=>array(
'xyz'=>array(
'class'=>'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// konfigurasi komponen lainnya
),
);
Selanjutnya, kita dapat mengakses komponen di mana saja mengunakan Yii::app()->xyz
. Komponen
akan dibuat secara lazy (yakni, dibuat saat diakses untuk pertama kali)
kecuali kita mendaftar properti preload
.
Widget dipakai terutama dalam tampilan.
Kelas widget yang diberiktan XyzClass
dimiliki oleh ekstensi xyz
, kita bisa menggunakannya dalam
sebuah tampilan seperti berikut,
// widget yang tidak memerlukan konten body $this->widget('application.extensions.xyz.XyzClass', array( 'property1'=>'value1', 'property2'=>'value2')); // widget yang dapat berisi konten body $this->beginWidget('application.extensions.xyz.XyzClass', array( 'property1'=>'value1', 'property2'=>'value2')); ...konten body widget... $this->endWidget();
Aksi dipakai oleh kontroler
untuk merespon permintaan spesifik pengguna. Kelas aksi XyzClass
dimiliki oleh ekstensi
xyz
, kita dapat menggunakannya dengan menimpa metode CController::actions dalam
kelas kontroler kita:
class TestController extends CController
{
public function actions()
{
return array(
'xyz'=>array(
'class'=>'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// aksi lainnya
);
}
}
Selanjutnya, aksi dapat diakses via rute
test/xyz
.
Filter juga dipakai oleh kontroler.
Terutama pre- dan post-process permintaan pengguna saat ia ditangani oleh sebuah
aksi.
Kelas filter XyzClass
dimiliki oleh
ekstensi xyz
, kita dapat menggunakannya dengan menimpa metode CController::filters
dalam file kontroler kita:
class TestController extends CController
{
public function filters()
{
return array(
array(
'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// filter lainnya
);
}
}
Dalam contoh di atas, kita dapat menggunakan operator plus dan minus dalam elemen pertama array untuk menerapkan filter ke aksi terbatas saja. Untuk lebih jelasnya, silahkan merujuk ke dokumentasi CController.
Kontroler menyediakan satu set aksi yang dapat diminta oleh pengguna. Untuk menggunakan ekstensi kontroler, kita perlu mengkonfigurasi properti CWebApplication::controllerMap dalam konfigurasi aplikasi:
return array(
'controllerMap'=>array(
'xyz'=>array(
'class'=>'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// kontroler lainnya
),
);
Kemudian, aksi a
dalam kontroler dapat diakses via
rute xyz/a
.
Validator dipakai terutama dalam kelas model
(salah satu yang diperluas baik dari CFormModel ataupun CActiveRecord).
Kelas validator XyzClass
dimiliki oleh
ekstensi xyz
, kita bisa menggunakannya dengan menimpa metode CModel::rules
dalam kelas model kita:
class MyModel extends CActiveRecord // atau CFormModel
{
public function rules()
{
return array(
array(
'attr1, attr2',
'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// aturan validasi lainnya
);
}
}
Ekstensi perintah konsol biasanya meningkatkan
piranti yiic
dengan perintah tambahan. Perintah konsol
XyzClass
dimiliki oleh ekstensi xyz
, kita bisa menggunakannya dengan mengatur
file konfigurasi untuk aplikasi konsol:
return array(
'commandMap'=>array(
'xyz'=>array(
'class'=>'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// perintah lainnya
),
);
Selanjutnya, kita dapat menggunakan piranti yiic
yang disertai dengan perintah
tambahan xyz
.
Catatan: Aplikasi konsol biasanya menggunakan file konfigurasi yang berbeda dari yang dipakai oleh aplikasi Web. Jika aplikasi dibuat menggunakan perintah
yiic webapp
, maka file konfigurasi untuk aplikasi konsolprotected/yiic
adalahprotected/config/console.php
, sementara file konfigurasi untuk aplikasi Web adalahprotected/config/main.php
.
Silahkan merujuk ke seksi mengenai modul bagaimana menggunakan modul.
Untuk menggunakan komponen generik, pertama kita perlu menyertakan file kelasnya dengan menggunakan
Yii::import('application.extensions.xyz.XyzClass');
Selanjutnya, kita dapat membuat turunan kelas, mengkonfigurasi propertinya, dan memanggi metodenya. Kita juga bisa memperluasnya untuk membuat anak kelas baru.
Signup or Login in order to comment.