Tutorial Membuat Extension di Yii
March 14th, 2012, Written by: | Categories: Programming, Tutorial, Yii Framework

Biasanya kita membuat extension karena ingin bisa digunakan di projek lain. Extension bisa bermacam-macam, misalnya berupa behavior, widget dan lain-lain. Untuk tutorial kali ini, Anda akan membuat sebuah extension jenis CWidget.

CWidget merupakan sebuah micro-controller, karena dia punya controller dan view tersendiri. Tetapi dia hanya menempati satu bagian kecil dalam sebuah halaman Web. Misalnya seperti tampilan di sebelah kanan blog Computesta.

Contoh Widget

Untuk tutorial ini, kita akan membuat sebuah widget yang menampilkan sebuah quote (kutipan) orang terkenal secara acak.

Langkah Pertama

Kita perlu memberi nama untuk widget kita. Mari kita namakan dia MyQuotes saja. Buatlah sebuah folder bernama “myquotes” (tanpa tanda kutip) di dalam webroot/protected/extensions.

Langkah Kedua

Buatlah sebuah file bernama “Myquotes.php” (perhatikan huruf kecil huruf besar dan tanpa tanda kutip) di dalam folder “myquotes”. Buka editor yang biasanya Anda pakai dan masukkan koding di bawah ini ke dalamnya.

<?php
class Myquotes extends CWidget{

	public function init(){
	}

	public function run(){

	}
}

Seperti yang kalian lihat nama kelas Myquotes, harus sama persis dengan nama file-nya (Myquotes.php) termasuk huruf besar huruf kecilnya. Dan kelas ini harus diturunkan dari CWidget supaya menjadi widget Yii.

Fungsi init() merupakan tempat inisialisasi nilai pada saat pertama kali widget di jalankan. Sedangkan run() berisi koding apa yang harus dilakukan widget bersangkutan.

Langkah Ketiga

Berikutnya kita akan membuat sebuah properti untuk menampung semua kutipan. Lalu kita isikan properti itu dengan beberapa kutipan.

<?php
class Myquotes extends CWidget{
	...
	private $quotes;

	public function init(){
		$this->quotes = array(
			'Jagalah tokomu dan tokomu akan menjagamu.',
			'Apa yang dimulai dengan amarah diakhiri dengan malu.',
			'Waktu adalah uang.'
		);
	}
	...

Untuk $quotes kita menggunakan tipe private karena kita tidak ingin orang lain mengakses langsung kumpulan kutipan kita.

Di bagian init(), masukkan kutipan-kutipan ke $this->quotes. Untuk tutorial ini, penulis memasukkan kutipan secara manual, tetapi Anda dapat mengimprovisasi supaya mengambil kutipan dari database.

Langkah Keempat

Langkah keempat kita harus mengambil acak salah satu dari kumpulan beberapa kutipan.

public function run(){
	//ambil acak salah satu quote
	$i= rand(0, sizeof($this->quotes)-1);
	$quote = $this->quotes[$i];

	//tampilkan
	$this->render('index', array('quote'=> $quote));
}

Kita ambil angka dengan cara mengacak. Kemudian simpan kutipan urutan ke angka tadi.

Selanjutnya kita memanggil sebuah file view bernama “index”, sekaligus mengirim variabel $quote ke file view tersebut.

Langkah Kelima

Untuk sisi tampilan kita perlu membuat sebuah folder “views” di dalam folder “myquotes”. Cukup buat sebuah file bernama “index.php”.

Isilah “index.php” dengan koding berikut ini:

<blockquote>
    <?php echo $quote; ?>
</blockquote>

Dalam koding di sini kita cukup tulis echo $quote untuk menampilkan isi kutipan. Sampai tahap ini, selesai sudah widget yang kita buat.

Cara Pemakaian

Misalnya Anda ingin menampilkan kutipan di halaman depan. Maka di dalam projek Anda bukalah webroot/protected/views/site/index.php. Kemudian masukkan koding ke tempat yang Anda inginkan:

$this->widget('application.extensions.myquotes');

Hasilnya kurang lebih akan seperti begini.

Contoh hasil Myquotes

Beginilah contoh hasil tampilan Myquotes

Sekian tutorial sederhana bagaimana membuat extension dengan Yii. Code pada tutorial ini dapat Anda unduh di sini. Jika ingin mengetahui lebih lanjut cara pembuatan extension silahkan membaca panduan Yii.

More about: , ,

13 Responses to “Tutorial Membuat Extension di Yii”

  1. budi

    Cara maggilnya gmn om
    pake apa ??
    pake ini ko ga bisa Yii::import(“application.extensions.myquotes”);

    Reply
    • Garry

      Kalau mau pakai extension tergantung extensionnya apa dulu. Jadi kebetulan di contoh ini memakai CWidget, jadi cara pakainya adalah :
      $this->widget(‘application.extensions.mysquotes’);

      Reply
      • budi

        Tetep Aja ga bisa padahal udh sama pesrsis kaya yg diatas
        di source code cuma ada ini

        Reply
        • Garry

          “ini” yang dimaksud apa yah? Oh ya, ada pesan error? Atau hanya sekedar tidak ada tampilan?

          Reply
  2. dayat

    thank you gan,,

    btw $this->render(‘index’, array(‘quote’, $quote)); harusnya :$this->render(‘index’, array(‘quote’=> $quote));

    untung ane download source code agan,, jd tw yg bener..
    hehe

    Reply
  3. Handoyo

    Makasih atas tutorialnya,mau tanya,apakah mungkin membuat sortable widget kaya di cms gt?sama misalkan user mau add widget ke dlm page. :) makasih

    Reply
  4. edicrew

    punya saya error seperi ini gan, gmn solusinya… kayakx masalah di aliasx

    Alias “application.extensions.myquote” is invalid. Make sure it points to an existing PHP file and the file is readable.

    Reply
    • Garry

      Hm, dari penulisan tersebut yang harus diperiksa mungkin ini:
      1. apakah penulisan nama folder “myquote” sudah benar? Apakah nama foldernya pakai huruf kecil semua?
      2. Kalo kodingnya di Linux, coba ubah hak akses folder “myquote” menjadi bisa write semuanya (777) dan file jadi 666

      Reply
      • gebra

        tetap gak bisa mas..erornya sama dengan ane..
        extensions (views(index),myquote))

        Reply
        • Garry

          Coba coding pemanggilannya diganti jadi begini (“myquote” ditambah huruf “s”):
          $this->widget(‘application.extensions.myquotes’);
          di webroot/protected/views/site/index.php.

          Reply
  5. AIMAGU

    Untuk cara pemanggilanya bisa menggunakan seperti ini: widget(‘ext.myquotes.Myquotes’); ?>

    Reply

Leave a Reply