Menggunakan extension biasanya berkaitan dengan tiga langkah berikut:
extensions/xyz
pada
direktori basis aplikasi,
di mana xyz
adalah nama extension.Setiap extension memiliki nama yang secara identitas unik diantara semua extension.
Extension diberi nama xyz
, kita dapat menggunakan alias path ext.xyz
untuk
menempatkannya pada basis direktori yang berisi semua file xyz
.
Extension yang berbeda memiliki persyaratan mengenai pengimporan, konfigurasi dan pemakaian. Selanjutnya, kita meringkas skenario pemakaian umum mengenai extension, berdasarkan pada kategorisasinya seperti dijelaskan dalam tinjauan.
Sebelum kita mulai melihat penggunaan extension pihak ketiga, kami akan memperkenalkan pustaka extension Zii, yang merupakan kumpulan extension yang dikembangkan oleh tim developer Yii dan disertakan dalam setiap rilis.
Ketika menggunakan sebuah ektensi Zii, kita harus merujuk ke kelas bersangkutan dengan menggunakan
alias path dalam bentuk zii.path.ke.NamaKelas
. Di sini akar alias zii
ditentukan oleh Yii. Dia akan dirujukkan
ke direktori pustaka Zii. Misalnya, untuk menggunakan CGridView, kita akan menggunakan
kode berikut dalam skrip view ketika merujuk ke extension:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
));
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'=>'ext.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// konfigurasi komponen lainnya
),
);
Selanjutnya, kita dapat mengakses komponen di mana saja mengunakan Yii::app()->xyz
. Komponen
ini akan dibuat secara lazy (yakni, dibuat saat diakses untuk pertama kali)
kecuali kita mendaftar properti preload
.
Behavior bisa dipakai dalam semua komponen. Pemakaiannya mencakup dua langkah. Dalam langkah pertama, behavior dilampirkan ke sasaran komponen. Dalam langkah kedua, metode behavior dipanggil melalui sasaran komponen. Sebagai contoh:
// $name secara unik mengidentifikasi behavior dalam komponen
$component->attachBehavior($name,$behavior);
// test() adalah metode $behavior
$component->test();
Seringkali sebuah behavior dilampirkan ke komponen menggunakan cara konfiguratif alih-alih
memanggil metode attachBehavior
. Sebagai contoh, untuk melampirkan behavior ke sebuah
komponen aplikasi, kita dapat
menggunakan
konfigurasi aplikasi berikut:
return array(
'components'=>array(
'db'=>array(
'class'=>'CDbConnection',
'behaviors'=>array(
'xyz'=>array(
'class'=>'ext.xyz.XyzBehavior',
'property1'=>'value1',
'property2'=>'value2',
),
),
),
//....
),
);
Kode di atas melampirkan behavior xyz
ke komponen aplikasi db
. Kita dapat melakukannya
karena CApplicationComponent mendefinisikan properti bernama behaviors
. Dengan menyetel properti ini
dengan sebuah daftar konfigurasi behavior, komponen akan melampirkan behavior terkait
saat ia diinisialisasi.
Untuk kelas CController, CFormModel dan CActiveModel yang biasanya harus diturunkan,
melampirkan behaviors dikerjakan dengan menimpa metode behaviors()
. Kelas-kelas tersebut akan
terpasang secara otomatis behavior-behavior yang dideklarasi dalam metode ini ketika inisialisasi. Sebagai contoh,
public function behaviors()
{
return array(
'xyz'=>array(
'class'=>'ext.xyz.XyzBehavior',
'property1'=>'value1',
'property2'=>'value2',
),
);
}
Widget dipakai terutama dalam tampilan.
Kelas widget yang diberiktan XyzClass
dimiliki oleh extension 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();
Action dipakai oleh controller
untuk merespon permintaan spesifik pengguna. Kelas aksi XyzClass
dimiliki oleh extension
xyz
, kita dapat menggunakannya dengan meng-override metode CController::actions dalam
kelas controller 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 controller.
Terutama pre- dan post-process permintaan pengguna saat ditangani oleh sebuah
aksi.
Kelas filter XyzClass
dimiliki oleh
extension xyz
, kita dapat menggunakannya dengan meng-override metode CController::filters
dalam file controller 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 action dalam jumlah terbatas saja. Untuk lebih jelasnya, silahkan merujuk ke dokumentasi CController.
Controller menyediakan satu set action yang dapat di-request oleh pengguna. Untuk menggunakan extension controller, kita perlu mengkonfigurasi properti CWebApplication::controllerMap dalam konfigurasi aplikasi:
return array(
'controllerMap'=>array(
'xyz'=>array(
'class'=>'application.extensions.xyz.XyzClass',
'property1'=>'value1',
'property2'=>'value2',
),
// controller lainnya
),
);
Kemudian, action a
dalam controller 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
extension 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
);
}
}
Extension perintah konsol biasanya meningkatkan
piranti yiic
dengan perintah tambahan. Perintah konsol
XyzClass
dimiliki oleh extension 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 module bagaimana menggunakan module.
Untuk menggunakan komponen generik, pertama kita perlu menyertakan file kelasnya dengan menggunakan
Yii::import('ext.xyz.XyzClass');
Selanjutnya, kita dapat membuat turunan kelas, mengkonfigurasi propertinya, dan memanggi metodenya. Kita juga bisa menurunkannya untuk membuat anak kelas baru.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.