Model Instalasi 3 : Custom Setup
3.4. Sca ff olding
Apa itu Scaffolding ? Scaffolding adalah sebuah fitur yang disediakan CakePHP untuk memudahkan pengembang aplikasi web menampilkan dan menganalisa konten database
pada saat pertama kali mereka mengembangkan aplikasi web dinamis, dengan konten web yang bisa ditambahkan, diubah dan dihapus secara interaktif melalui halaman web. Sebelum masuk pada penjelasan, ada baiknya kita mencoba terlebih dahulu fitur
Scaffolding. Ikuti langkah-langkah di bawah ini dengan seksama dan lihatlah keajaiban yang ditawarkan Scaffolding untuk Anda.
Kali ini, kita akan membuat sebuah aplikasi web untuk melakukan manajemen pemain sepakbola Liga Indonesia. Dengan aplikasi ini, kita bisa menambahkan (Add), mengubah (Edit), dan menampilkan (View) pemain secara interaktif. Anda hanya membutuhkan waktu kurang dari 4 menit untuk membuat semuanya berjalan !
Sebelum masuk pada aplikasi, kita akan membuat database-nya terlebih dahulu. Buka aplikasi web phpMyAdmin dengan mengakses :
http://localhost/phpmyadmin/
Apabila Anda belum memiliki aplikasi phpMyAdmin, Anda bisa menggunakan source
phpMyAdmin yang tersedia pada CD atau mendapatkan versi terbarunya melalui internet. Setelah Anda membuka phpMyAdmin, buatlah sebuah database dengan nama
latihancake. Database ini nantinya akan kita gunakan seterusnya untuk membuat proyek-proyek aplikasi web berskala menengah di akhir buku ini. Setelah Anda berhasil menciptakan sebuah database baru, buatlah dua buah tabel baru, tabel players dan
teams dengan struktur di bawah ini :
Tabel 3.1. Tabel ‘players’
Nama Field Tipe Data Keterangan
id small int (5) Unsigned, Not null, auto_increment, primary key firstname varchar(50) Not null
position varchar(25) Not null team_id small int (6) Null
Tabel 3.2. Tabel ‘teams’
Nama Field Tipe Data Keterangan
id small int (5) Unsigned, Not null, auto_increment, primary key name varchar(50) Not null
atau dengan mengeksekusi perintah SQL di bawah ini :
Query SQL untuk Tabel ‘players’ dan ‘teams’
CREATE TABLE `players` (
`id` smallint(5) unsigned NOT NULL auto_increment, `firstname` varchar(50) NOT NULL default '',
`position` varchar(25) NOT NULL default '', `team_id` smallint(6) default NULL,
PRIMARY KEY (`id`) );
CREATE TABLE `teams` (
`id` smallint(5) unsigned NOT NULL auto_increment, `name` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`) );
Perhatikan field team_id pada tabel players. Ini adalah foreign key yang dipetakan ke
primary key tabel teams. Field tersebut diberi nama demikian karena CakePHP mampu secara otomatis mengidentifikasinya sebagai foreign key dan memanfaatkannya untuk menampilkan berbagai macam hal yang menarik seperti membuat komponen HTML
listbox saat menambahkan dan mengedit pemain baru.
Ada beberapa peraturan yang harus ditaati supaya fitur Scaffolding ini berjalan dengan baik :
• Apabila Anda ingin memetakan sebuah foreign key ke sebuah tabel, pada aplikasi kita adalah tabel teams ke tabel players, maka foreign key tersebut harus diberi nama dengan TABLE_id, dimana TABLE adaIah bentuk tunggal dari foreign table yang kita petakan. Dalam hal ini, kita memberi nama foreign key kita dengan nama team_id
(team adalah bentuk tunggal dari teams).
• Tabel yang akan kita buat harus dipetakan pada controller yang mendefinisikan variabel
$scaffold. Kita akan melihat penerapannya pada contoh ini.
• Apabila Anda ingin memanfaatkan keunggulan CakePHP untuk memetakan hubungan (asosiasi) antar tabel, tabel yang Anda buat harus dihubungkan pada model yang
mendefinisikan asosiasi tabel-tabel yang relevan. CakePHP mendukung empat jenis asosiasi antar tabel: hasOne, hasMany, belongsTo, dan hasAndBelongsToMany. Pada aplikasi kita, masing-masing pemain berasosiasi dengan satu tim, sehingga kita akan menggunakan jenis asosiasi belongsTo. Penjelasan lebih lengkap mengenai jenis asosiasi, model, controller, dan view terdapat pada bab selanjutnya.
Langkah kedua adalah menghubungkan aplikasi CakePHP dengan database Anda. Buka
f o l d e r / a p p / c o n f i g /. A n d a a k a n m e n e m u k a n s e b u a h fi l e b e r n a m a
database.php.default. Ubah nama file tersebut, sehingga menjadi database.php. Selanjutnya, ubah dan sesuaikan konfigurasi database pada file tersebut. Sebelum Anda ubah, filedatabase.php akan tampak sebagaimana di bawah ini :
File : database.php
<?php
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql', 'connect' => 'mysql_connect', 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'project_name', 'prefix' => '');
var $test = array(
'driver' => 'mysql', 'connect' => 'mysql_connect', 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'project_name-test', 'prefix' => ''); } ?>
Kita akan menggunakan variabel $default pada kelas DATABASE_CONFIG. Untuk itu, variabel $test bisa Anda hapus. Ubah isi variabel $default tersebut dengan mengisikan
latihancake pada elemen array database, localhost pada elemen array host,
username_database_anda pada elemen arraylogin, password_database_anda pada elemen arraypassword. Setelah Anda ubah dan sesuaikan dengan konfigurasi database
menggunakan username ‘root’ dengan password ‘root’ untuk mengakses database milik penulis. Anda bisa menggunakan username dan password yang sesuai.
File : database.php
<?php
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql', 'connect' => 'mysql_connect', 'host' => 'localhost', 'login' => 'root', 'password' => 'root', 'database' => 'latihancake', 'prefix' => ''); } ?>
Setelah Anda selesai menciptakan database dan tabel yang dibutuhkan, serta mengarahkan instalasi CakePHP Anda pada databaselatihancake, saatnya kita berkutat dengan aplikasi web berbasis CakePHP. Untuk membuat aplikasi ini, Anda akan membuat
script pada tiga struktur pokok CakePHP, yakni model, controller dan view. Struktur model
berupa sebuah kelas PHP yang menangani manajemen data dan berhubungan langsung dengan tabel database Anda. Struktur controller berupa sebuah kelas PHP yang akan menangani proses request dari pengguna aplikasi, mengambil data dari model, dan memberikan hasil request kepada view. Struktur view adalah gabungan script HTML dan PHP yang akan menampilkan hasil request kepada pengguna melalui browser. Penjelasan lebih lanjut mengenai konsep Model-View-Controler (MVC) akan dibahas pada bab selanjutnya.
Buka folder /app/controllers/. Di dalam folder tersebut, buatlah sebuah file PHP dengan nama players_controller.php. Isikan script di bawah ini :
File : players_controller.php
<?php
class PlayersController extends AppController {
var $scaffold; }
Jangan pernah meninggalkan karakter kosong (spasi) setelah tanda ‘?>’ di akhir script karena CakePHP akan memunculkan pesan peringatan pada halaman aplikasi Anda.
Masih pada folder controllers, buatlah sebuah file controller kedua bernama
teams_controller.php. Isikan script di bawah ini :
File : teams_controller.php
<?php
class TeamsController extends AppController {
var $scaffold; }
?>
Dua buah file ini nantinya akan bertugas menangani semua request dari user, termasuk menambahkan pemain atau nama tim, mengubah, dan bahkan menghapusnya.
Selanjutnya, buka folder /app/models/. Buatlah file model untuk tabel players dengan nama player.php. Isikan script di bawah ini :
File : player.php
<?php
class Player extends AppModel {
var $name = 'Player';
var $belongsTo = array('Team' =>
array('className' => 'Team', 'conditions' => '', 'order' => '', 'foreignKey' => 'team_id' ) ); } ?>
Masih pada folder yang sama, buatlah model untuk tabel teams dengan nama team.php. Isikan script di bawah ini :
File : team.php
<?php
class Team extends AppModel {
var $name = 'Team';
var $displayField = 'name'; }
?>
Script penjelasan fitur Scaffolding, baik kelas controller maupun model dapat diambil dari CD yang kami sertakan bersama dengan buku ini.
Arahkan browser Anda pada url di bawah ini dan lihatlah apa yang dilakukan oleh
Scaffolding :
http://localhost/cake/teams
Gambar 3.5. Tampilan halaman List Teams
Cobalah untuk menambahkan nama-nama tim sepakbola kesayangan Anda dengan masuk pada linkNew Team. Sebagai contoh, Anda menambahkan empat buah tim yang berlaga di Liga Indonesia : PSIM, Persija Jakarta, PSMS Medan, dan Persebaya Surabaya. Tampilan halaman tim setelah Anda menambahkan empat buah tim tersebut sebagai berikut :
Gambar 3.6. Halaman List Teams telah terisi
Untuk melakukan pengubahan record atau isi database, Anda cukup menekan linkEdit. Untuk menghapus record, Anda bisa menekan linkDelete. Untuk menampilkan informasi
record, Anda bisa masuk pada linkView. Kini, arahkan browser Anda pada halaman players
dengan url :
http://localhost/cake/players
Kini Anda akan menambahkan seorang pemain depan (striker) bernama Bejo pada tim Persija. Setelah membuka link New Player, Anda akan menemukan form isian, berikut komponen listbox yang berisi nama-nama tim, sebagaimana gambar berikut ini :
Gambar 3.8. Menambahkan pemain
Setelah Anda menambahkan beberapa pemain, halaman List Players akan tampak sebagaimana di bawah ini :
Gambar 3.9. Halaman List Players telah terisi
Fitur Scaffolding yang menakjubkan telah Anda ciptakan dan dalam waktu kurang dari 4 menit CakePHP membantu Anda mewujudkan impian Anda untuk membuat sebuah aplikasi web yang menarik. Sangat mudah, bukan ?
Pada dasarnya, fitur Scaffolding bekerja pada file controller saat Anda menambahkan variabel $scaffold. Untuk pengembangan aplikasi selanjutnya, variabel $scaffold
hanya digunakan untuk membantu memberikan sekilas gambaran aplikasi yang akan Anda ciptakan. Nantinya variabel ini akan dihilangkan dan Anda diminta untuk membuat sendiri fungsi-fungsi di dalam kelas-kelas PHP Anda, baik pada kelas-kelas model maupun
controller. Dengan demikian, Anda bisa lebih leluasa melakukan inovasi-inovasi pada aplikasi web Anda.