Konsep Kerja Framework Yii

1. Prasyarat
Saya menganggap para pembaca familiar dengan PHP dan database (DB). Pembaca bisa membuat query SQL, menggunakan DB dalam PHP dan membuat setidaknya sebuah web sederhana menggunakan PHP, HTML, CSS, dan DB. Jika anda tidak mengetahui apapun mengenai PHP dan DB, Saya menyarankan anda untuk berhenti membaca tulisan ini dan mencari tahu tentang PHP dan DB. Dan yang tidak kalah penting adalah OOP (Object Oriented Programming) / PBO (Pemograman Berorientasi Objek). Artinya classes, overriding functions, menggunakan constructor, public dan private methods dan properties, dan lain-lain . Dapat dipraktekkan dalam PHP, Java, C#, VB.NET dan lain-lain.
2. MVC – Penjelasan Arsitektur
MVC (Model-View-Controller) adalah salah satu jenis dari arsitektur aplikasi. Digunakan dalam Yii framework. Ketika aplikasi anda menggunakan arsitektur MVC, aplikasi tersebut dibagi menjadi 3 bagian dasar.
M = Model = bagian yang mendefinisikan relasi (relations) antara data dalam DB dan aturan (rules) yang harus diikuti ketika menyimpan data ke DB. Model juga memberikan kita tools untuk membaca/menyimpan data dari/ke DB.
V  = View = Bagian ini digunakan hanya untuk menampilkan data kepada user. Bagian ini tidak digunakan untuk menulis ke DB atau menghitung hal-hal sulit. Bagian ini hanya menerima data dan menampilkannya menggunakan HTML, CSS, JS …
C = Controller = Bagian yang memproses dan mengubah data, menangani tindakan user’s, memutuskan, menghitung, berpikir dan memanggil model dan view … bagian ini hanya bertindak.
Gambar 1). Skema MVC
Perhatikan arah panah pada gambar diatas. Controller bisa baca/tulis data dari/ke database hanya melalui Model. Controller juga bisa mengevaluasi input user, menggabungkannya dengan data, menghitung nilai baru … dan mengirimkan output dan hasil kepada View dan DB. View memformat data yang diberikan dan menampilkannya. (Contoh membuat table, dan lain-lain.)
Seperti yang dapat kita lihat, Controller sebagai titik pusat. Ia Boss-nya. Apapun yang anda lakukan – Controller memprosesnya dan menentukan apa yang akan dilakukan selanjutnya. Meminta data yang sesuai dari DB dan melakukan apa yang anda inginkan. Kita bisa melihat bahwa Model dan View tidak melakukan apapun, kecuali mereka diminta. Dalam beberapa kasus, Model dan View tidak harus digunakan.
Sekarang, mari kita fokus pada Controller.
2.1. Controller
Controller terinisiasi (dan kode-nya running) setiap kali anda menuju suatu alamat di browser. Dalam kode-nya anda dapat membaca data dari variabel-variabel POST, GET atau SESSION, menggunakan DB, dan lain-lain. Ketika anda menggunakan arsitektur MVC (dalam framwork Yii), alamat (addresses) mempunyai spesial format. Mereka menyertakan parameter yang menyatakan controller mana yang akan digunakan. (bagian web yang mana yang ingin anda masuki)
Ya, anda dapat memiliki lebih banya controller-controller. Setiap controller dapat digunakan untuk bekerja dalam bagian berbeda dari web anda. Satu controller bisa bekerja dengan akun-akun user, controller lain dengan produk-produk yang anda jua, dan lain-lain. Dan seperti apakah alamat web terlihat ketika anda menggunakan MVC?
www.myweb.com/index.php?r=myController
Parameter “r” menyatakan bahwa anda ingin menggunakan Controller bernma “myController”. Dan disini kita bisa melihat spesialitas dari MVC (atau Yii). Alamat hanya berisi index.php. Tidakada file lain. Semua navigasi terurusi dengan parameter “r” dan controller.
2.1.1. Action
Controller bisa memiliki satu atau lebih sub-controller. Masing-masing memiliki kegunaan yang berbeda. Jika Controller kita mengurusi user-user maka satu sub-controller bisa menghapus user, sub-controller lain bisa menambah user, sementara yang lain bisa merubah data user … sub-controller – sub-controller ini dinamakan Actions. Anda bisa menyatakan action dengan menggunakan parameter “r”. Seperti yang dapat kita lihat diatas, controller dinyatakan seperti ini: “?r=myController”. Jika controller kita memiliki action bernama “myAction”, dan jika kita mau menjalankannya, kita bisa menulis alamat sebagai berikut:
www.myweb.com/index.php?r=myController/myAction
Kita bisa menulis ulang alamat tersebut sebagai contoh seperti berikut:
www.myweb.com/index.php?r=users/edit
Jika anda tidak menyatakan action dan hanya menjalankan controller seperti ini “?r=myController” maka default action yang akan dijalankan. Default action harus dinyatakan dalam controller menggunakan fungsi actionIndex().
2.2. Model
Model adalah sesuatu yang sangat sederhana dalam Yii. Anda tidak harus menulis satu baris kode pun, model bisa dibuat secara otomatis menggunakan command line. Setiap tabel dalam DB memiliki satu model. Model memiliki nama yang sama (serupa) dengan nama tabel. Setiap model memiliki 2 fungsi utama. Mencari data dan menyimpan data. Itu yang biasanya paling kita butuhkan. Ketika anda butuh membaca data dari DB ke controller anda hanya perlu menulis seperti ini:
NamaModel.findAll()
hanya seperti itu. Tanpan query SQL, tidak perlu menggunakan array (seperti harus anda lakukan dalam PHP). Itulah kelebihan Yii serta akses ke DB berbasis objeknya. Ketika anda ingin menyimpan data pada tabel, perintahnya seperti berikut:
NamaModel.kolom = nilai;
...
NamaModel.save();
Lagi-lagi, hanya seperti itu saja.
Hal lain yang disediakan oleh Model adalah relasi. Relasi memudahkan akses antara satu tabel dengan tabel lainnya. Yang perlu diperhatikan disini adalah Foreign Keys. Relasi itu seperti Join dalam SQL. Misalkan didalam tabel karyawan ada ID dari departemen tempat karyawan tersebut, anda dapat dengan mudah mendapat informasi mengenai departemen tersebut, seperti berikut:
$karyawan->departemen->namaDepartemen;
Dimana #karyawan adalah sebuah record hasil dari suatu criteria, sedangkan departemen disitu adalah nama dari relasinya (menghubungkan model karyawan dan model departemen) dan namaDepartemen adalah kolom pada tabel departemen.
2.2. View
Seperti yang telah disebut diatas, view tidak memiliki kecerdasan. Ia hanya menerima data dari Controller kemudian menampilkannya. View adalah satu-satunya tempat dimana kita menggunakan HTML, CSS, JavaScript dan lain-lain. Tentu saja kita dapat menggunakan FOR, WHILE, IF, atau model … tetapi hanya sebatas menampilkan data kepada user.
Koreksi: Telah dijelaskan bahwa View idelnya hanya untuk menampilkan data. Dalam prakteknya terkadang lebih mudah bagi pemula untuk tidak mengirim data dari Controller ke View, melainkan membaca data dari DB didalam View (menggunakan Model) lalu menampilkannya.
3. Apa itu framework dan untuk apa menggunakannya
Sederhananya, framework adalah kumpulan fungsi-fungsi yang memudahkan pekerjaan anda. Fungsi-fungsi tersebut biasanya di kelompokkan dalam Kelas-kelas. Sebagai contoh, didalam Yii Framework ada kelas bernama CHtml. Sangat jelas kelas tersebut menyediakan fungsi untuk membuat kode HTML (table, lists, forms …). Anda tidak perlu menggunakan HTML, cukup memanggil fungsinya saja.
[sourceode light=true language='php'] echo CHtml::beginForm(); [/sourcecode] Menghasilkan kode html::
<form method="post" action="thisScriptName">
Mengapa menggunakan framework? Framework memudahkan pekerjaan anda. Anda tidak perlu mengetik detail setiap kode, framework melakukan beberapa hal secara otomatis untuk anda. Sebagai contoh, Yii mengintegrasikan fungsi form-validation, mengurusi loggin user, dan masih banyak lagi. Anda hanya perlu menemukan segala kemungkinannya dan belajar bekerja menggunakannya. Tapi ini lah hal tersulit (Terkadang lebih cepat membuat fungsi sendiri daripada mencoba memhami solusi yang sudah disediakan). Itulah mengapa saya membuat manual ini. Untuk menunjukkan beberapa kemungkinan di dalam satu tempat dan dalam prakteknya sehingga anda tidak perlu melakukan pencarian google untuk hal yang sederhana.
4. Yii Framework Yii Framework mempunyai web dan dokumentasi sendiri. Apa yang perlu anda lakukan (jika ingin menggunakannya) adalah men-download dan meng-ekstrak nya ke folder localhost anda. Tentu saja anda memerlukan PHP dan MySQL server (Saya menggunakan WAMP. Jika anda mau mencobanya, matika skype untuk sesaat ketika Wamp mulai berjalan. Jika skype masih berjalan, Wamp tidak akan jalan).
4.1. Projek demo dan struktur folder Sekarang anda sudah menginstall Yii (anda meng-copy seluruh file ke folder localhost). Lalu? Mungkin terlihat tidak berguna sekarang. Cara terbaik untuk bersahabat dengan Yii adalah dengan mencoba projek Demo, coba jalankan dan lihat seperti apa kodenya. Setiap manual menjelaskan projek Demo, tetapi tidak menjelaskan kenapa anda harus menggunakannya. Saya tidak mengerti mengapa setiap orang mendorong saya kepada demo projek yang membosankan, disaat saya menginginkan sebuah projek yang nyata.
Projek demo itu bagus karena anda akan melihat struktur folder, yang sangat penting untuk diketahui. Ketika anda menjelajahi kode dan file-filenya, anda akan mengerti bagaimana anda dapat mengirim data dari Controller ke View atau bagaimana form divalidasi. Anda akan melihat bagaimana navigasi bekerja menggunakan “r” parameter dan lain-lain. Jadi gunakan waktu untuk sedikit bermain-main dengannya. Kedepannya anda dapat membuat projek demo, generate secara otomatis models dari DB dan merubahnya untuk kepentingan anda. Ini Cepat. Keuntungannya, didalam demo projek sudah tersedia kerangka folder, head HTML, dan lain-lain.
Link berikut: Hello World, First Project, dan Blog dapat membantu anda. Petunjuknya menjelaskan kerja dasar menggunakan Yii seperti membuat projek demo, relasi antar tabel, dan lain-lain.
Di dalam projek demo (dan dalam projek Yii lainnya) “protected” adalah folder penting. Ada 3 subfolder didalamnya: models, controllers, views.  Berisi skrip PHP yang membangun Web anda.
Models
  • Anda akan menemukan hanya ada 2 model yang tidak terkoneksi dengan DB. Projek demo sama sekali tidak bekerja dengan DB. Model-model ini mendefinisikan logika untuk form HTML. Ketika suatu form HTML di submit, isinya di cek (validasi) menggunakan rules yang ada pada pada model-model ini. Contohnya pada actionContact(). (lihat dibawah)
  • Rule-rule validasi di tentukan di method rules().
  • Item-item form didefinisikan sebagai properti dari kelas model.
  • Label untuk item-item form didefinisikan didalam method attributeLabels().
  • Hampir tidak ada perbedaan antara model yang terkoneksi dan yang tidak terkoneksi ke DB. Mereka 99% terlihat sama.
  • Jika model anda bekerja dengan database, model tersebut tidak meng-extend kelas CFormModel, melainkan CActiveRecord dan didalamnya mengandung method tableName().
Controllers
Abda hanya akan melihat 1 controller yaitu SiteController.php. Buka pada text editor dan lihat pada method-method nya:
  • actionIndex() – hanya me-render view “index”
  • actionContact() – membuat instance baru dari model ContactForm, memasukkan data dari POST dan mengujinya (akan dijelaskan pada bab selanjutnya) dan akhirnya me-render view “contact” dan mengirim variabel $model sebagai parameternya
  • actionLogout() – anda dapat melihat bagaimana cara memanggil variabel system dan methods dari Yii dan bagaimana caranya me-redirect ke URL berbeda.
  • Ini adalah hal-hal penting yang perlu anda ketahui dalam controller.
Views
Anda akan melihat 2 subfolders:
  • layouts: terdapat file main.php dengan definisi dari tampilan layout website secara keseluruhan, item-item menu, logo dan lain-lain.
  • site: mengandung view-view yang digunakan SiteController. Coba lihat login.php. View ini dipanggil dari actionContact() dan menerima $model sebagai parameter. Perhatikan bahwa anda dapat mulai menggunakan variable tersebut tanpa pendefinisian lain. Hanya dengan menulis $model.

2 komentar:

  1. mantap gan ane juga mw share tentang yii dan aplikasinya bisa visit ke SINI di tunggu komenya yaww

    BalasHapus

Pages