0 follower

Menggunakan Ekstensi

Menggunakan ekstensi biasanya berkaitan dengan tiga langkah berikut:

  1. Download ekstensi dari repositori ekstensi Yii.
  2. Urai ekstensi di bawah subdirektori extensions/xyz pada direktori basis aplikasi, di mana xyz adalah nama ekstensi.
  3. Impor, konfigurasi dan gunakan 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.

1. Komponen Aplikasi

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.

2. Widget

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
<?php $this->widget('application.extensions.xyz.XyzClass', array(
    'property1'=>'value1',
    'property2'=>'value2')); ?>
 
// widget yang dapat berisi konten body
<?php $this->beginWidget('application.extensions.xyz.XyzClass', array(
    'property1'=>'value1',
    'property2'=>'value2')); ?>
 
...konten body widget...
 
<?php $this->endWidget(); ?>

3. Aksi

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.

4. Filter

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.

5. Kontroler

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.

6. Validator

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
        );
    }
}

7. Perintah Konsol

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 konsol protected/yiic adalah protected/config/console.php, sementara file konfigurasi untuk aplikasi Web adalah protected/config/main.php.

8. Modul

Silahkan merujuk ke seksi mengenai modul bagaimana menggunakan modul.

9. Komponen Generik

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.