- Back to Home »
- ARSITEKTUR MVC DALAM YII FRAMEWORK
Posted by : Unknown
Tuesday, December 10, 2013
MVC (Model-View-Controller) adalah salah
satu tipe arsitektur aplikasi. Yii menggunakan MVC. Struktur aplikasi yang
menggunakan arsitektur MVC, akan dibagi menjadi tiga bagian.
M = Model = Bagian yang
mendefinisikan hubungan antar data dalam DB dan aturan yang harus diikuti saat
menyimpan data ke DB. Hal ini juga memberi kita alat untuk membaca / menyimpan
data dari / ke DB.
V = View = Bagian yang
digunakan hanya untuk menampilkan data kepada pengguna. Ia tidak menulis ke DB
atau menghitung hal-hal sulit. View hanya menerima data dan menampilkannya
menggunakan HTML, CSS, JS, dll.
C = Controller = Bagian
yang memproses dan merubah data, menangani tindakan pengguna, memutuskan,
menjumlah, berpikir dan memanggil model dan menampilkan … It simply acts! atau
lakukan sesuatu!
. Controller dapat membaca / menulis data dari / ke database hanya melalui
Model. Controller juga mengevaluasi input pengguna, menggabungkan dengan data,
menghitung nilai-nilai baru … dan mengirimkan keluaran dan hasil ke View dan
DB. Melihat format data yang diberikan dan menampilkannya. (Misalnya
menampilkan tabel-tabel dll)
Seperti yang kita lihat, Controller
adalah titik pusat. Dia bosnya. Apa pun yang anda lakukan – Controller akan
memprosesnya dan memutuskan apa yang harus dilakukan selanjutnya. Meminta data
yang sesuai dari DB dan melakukan apa yang Anda ingin lakukan. Kita bisa
melihat bahwa Model dan View tidak melakukan apa-apa, kecuali diminta. Dalam beberapa
kasus, Model dan View tidak harus digunakan.
Jadi mari kita fokus pada Controller
sekarang.
1.
Controller
Controller dimulai (dan kodenya
dijalankan) setiap kali anda memasukkan alamat di browser. Dalam kode, anda
dapat membaca data dari POST, GET atau variabel SESSION, bekerja dengan DB,
dll. Bila anda menggunakan arsitektur MVC (dalam Yii framework), alamat
memiliki format khusus. Mereka menggunakan parameter yang menentukan controller
mana yang akan digunakan. (bagian mana dari web yang ingin anda memasuki)
Anda dapat memiliki banyak controller.
Setiap controller dapat digunakan untuk bekerja di bagian yang berbeda dari web
anda. Satu controller dapat bekerja dengan account pengguna, satu lagi dengan
produk yang anda jual, dll. Contoh alamat web ketika anda menggunakan MVC :
www.myweb.com/index.php?r=myController
Parameter “r”
menunjukkan bahwa anda ingin menggunakan controller bernama “myController“. Dan di sini kita bisa melihat kelebihan
khusus lain dari MVC (atau Yii). Alamat hanya berisi index.php. Tidak ada file
lainnya. Semua navigasi dilakukan oleh “r” parameter dan controller.
2.
Action
Controller
dapat memiliki satu atau lebih sub-controller. Masing-masing melakukan hal
berbeda. Misalnya, jika controller kita bekerja dengan “pengguna” maka satu sub-controller dapat digunakan
untuk menghapus pengguna, satu lagi dapat menambah pengguna, yang ketiga untuk
merubahan (menyunting) isinya … Sub-pengendali/sub-controller ini disebut
Actions. Anda dapat (harus) menentukan tindakan/action menggunakan
parameter ”r”. Seperti kita lihat di atas, controller ditentukan seperti
ini: “?r=myController“. Jika controller kita punya action
yang disebut “myAction“, dan jika kita ingin menjalankannya, kita
akan menulis alamat ini:
www.myweb.com/index.php?r=myController/myAction
Kita bisa menulis ulang alamat ini
misalnya seperti ini:
www.myweb.com/index.php?r=users/edit
Jika anda
tidak menentukan action dan hanya menjalankan controller seperti ini “?r=myController” maka aksi default/default action yang
akan dijalankan. Default action harus ditentukan dalam controller menggunakan
fungsiactionIndex().
3.
Model
Model adalah
hal yang sangat sederhana dalam Yii. Anda tidak harus menulis satu barispun
kode, model dapat dibuat secara otomatis menggunakan command line. Setiap tabel
di DB memiliki model tersendiri. Model ini memiliki nama yang sama (atau
serupa) seperti tabelnya. Setiap model memiliki 2 fungsi penting. Cari data dan Simpan data.
Itu saja yang biasanya kita perlukan. Bila anda perlu membaca data dari DB ke
controller, anda hanya menulis sesuatu seperti:
ModelName.FindAll()
dan hanya itu. Tidak perlu query SQL,
tidak perlu fetching array (seperti yang anda harus lakukan di PHP). Itulah
keuntungan dari Yii dan Yii menggunakan akses berorientasi objek untuk DB. Bila
anda ingin menulis ke table, perintahnya terlihat seperti ini:
ModelName.column = value;
…
ModelName.Save()
Hanya itu saja.
Hal lain yang model sediakan adalah
hubungan/relation. Relasi ini memungkinkan anda untuk “tunnel” melalui satu
tabel ke tabel yang lain. Yang penting ada Foreign Keys. Relasi misalnya
sesuatu seperti SQL Join. Ketika setiap karyawan dalam tabel karyawan memiliki
ID departemen masing-masing, Anda dapat dengan mudah mendapatkan info tentang
departemen ini dengan menulis sesuatu seperti ini:
$employee->department->departmentName
Dimana $employee adalah satu karyawan tertentu yang
dipilih berdasarkan beberapa kriteria, kata department adalah
nama dari relasi (mengarah dari model milik employees ke model milik
departements) dandepartmentName adalah kolom
dalam di tabel departements.
4. View
Seperti yang saya tulis di atas, view
tidak memiliki kecerdasan. Dia hanya menerima data dari Controller dan
menampilkannya. Ini adalah satu-satunya tempat di mana kita menggunakan HTML,
CSS, JavaScript dll. Kita tentu saja dapat menggunakan FORs, WHILEs, Ifs,
models … Tetapi satu-satunya tujuannya adalah untuk menampilkan data ke
pengguna.
Koreksi: Described View adalah view yang
ideal. Dalam prakteknya, kadang-kadang lebih mudah bagi pemula untuk tidak
mengirimkan data langsung dari controller ke view, tapi membaca data dari DB di
View (menggunakan model) dan menampilkannya.
Kalau bisa, bikin postingan juga mengenai pembangunan aplikasi sederhana menggunakan YII Framework :D
ReplyDeleteNice Post...