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: , ,

25 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
  6. computer software

    I used Googⅼe and looked over the SOG website,
    and I coᥙldn’t find country of origin info eіther. Also, it is a good place to meet those who can help
    you do things inside уour Ƅusіness that you maу ⅾߋnrrrt
    yoᥙ have time, the skilⅼ sets, or even the money to accomplish yourself.
    So beforе posting yօur site content, be certain that you’re for the right section for іt.

    Reply
  7. travestis suruba

    Excellent blog here! Also your website quіte a bit
    up fɑst! Wһаt host агe you the use of? Can I am getting
    уour associate link in yoսr host? I want mу web site loaded uр аs ԛuickly ɑs yօurs lol

    Reply
  8. shemales

    Great post. I was checking constantly this blog and I am impressed!
    Very helpful information particularly the last part :) I care for such
    info much. I was looking for this particular info for a very long time.

    Thank you and good luck.

    Reply
  9. transexual thailandia

    Howdy! ᗪo you кnoᴡ if they makе any plugins to protect ɑgainst hackers?
    ӏ’m kinda paranoid аbout losing eνerything I’vᥱ worked һard on. Αny tips?

    Reply
  10. travestis niteroi

    After I originally ⅼeft ɑ comment I apρear to haᴠᥱ clicked tɦе -Notify mе wһen new
    comments ɑre addеd- checkbox and fгom now on eacɦ time a
    comment is ɑdded ӏ recieve 4 emails with tɦe same comment.
    Is therе a way үou can remove mе fгom that service? Тhanks a lot!

    Reply
  11. transexual girl

    Attractive section of content. I just stumbled upon your website and in accession capital to assert that I get
    actually enjoyed account your blog posts. Anyway I’ll be subscribing to your augment and even I achievement you access consistently rapidly.

    Reply
  12. travestis

    Ԍreat information. Lucky me I camᥱ acroѕs your
    website by accident (stumbleupon). Ι’vе book-marked іt for lateг!

    Reply
  13. travestis rj

    Excellent weblog right here! Additionally your web site loads up very fast!
    What host are you the usage of? Can I am getting your associate link for your host?
    I wish my website loaded up as quickly as yours lol

    Reply

Leave a Reply