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" > |
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().
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.
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.
mantap gan ane juga mw share tentang yii dan aplikasinya bisa visit ke SINI di tunggu komenya yaww
BalasHapusSippp Mantap penjelasan nya
BalasHapus