CakePHP merupakan salah satu framework PHP yang mengadopsi konsep arsitektur MVC (Model View Controller) dan ORM (Object Relational Mapping). CakePHP menyediakan semua fasilitas yang kita perlukan untuk membangun aplikasi web dengan cepat.CakePHP merupakan salah satu framework PHP yang menganut konsep arsitektur MVC atau Model View Controller. Oleh karena itu, pada artikel ini saya akan memberikan sedikit penekanan pada konsep ModelViewdan Controller tersebut.

Nah, pada artikel ini saya akan membahas secara detail bagaimana cara membuat aplikasi sederhana dengan framework tersebut.

Kebutuhan sistem yang harus dipenuhi, yaitu sebagai berikut:

  • Web server, misalnya Apache (dengan mod_rewrite), IIS atau Lighttpd
  • PHP 4.3.2 atau yang lebih baru
  • Database: MySQL, PostgreSQL, Microsoft SQL Server, Oracle, atau SQLite

Jika komputer Anda belum terinstall software yang diperlukan seperti di atas, Anda bisa menginstall web server tersebut menggunakan paket.

Saya akan langsung ke inti persoalan yaitu bagaimana cara membuat aplikasi web dengan CakePHP. Pada artikel ini saya akan mengambil contoh sebuah aplikasi web untuk mengelola koleksi buku. Kita sebut saja aplikasi tersebut dengan nama Katalog Buku.

Instalasi CakePHP

Langkah pertama, download terlebih dahulu source file CakePHP. Saya sarankan agar Anda memilih CakePHP versi terakhir yang sudah dirilis ke publik, yaitu 2.2.1. Selanjutnya ekstrak source file tersebut dan letakkan di DocumentRoot. Pada XAMPP, default lokasi DocumentRoot adalahC:\xampp\htdocs\. Anda juga bisa meletakkan source file tersebut pada direktori khusus, misalnya cakephp.

Berikut ini contoh struktur direktori CakePHP pada DocumentRoot:

/path_to_document_root   # Contohnya: C:\xampp\htdocs\
/cakephp
/app
/cake
/plugins
/vendors
      .htaccess
      index.php

README

Sekarang coba ketikkan alamat URL http://localhost/cakephp di browser (Mozilla Firefox, Chrome atau Internet Explorer). Anda akan melihat tampilan default homepage aplikasi web yang Anda buat dengan CakePHP seperti gambar di bawah ini.

 

Sampai di sini Anda sudah berhasil menginstall CakePHP.

Konfigurasi Aplikasi

Tahap selanjutnya kita harus mengatur konfigurasi aplikasi yang akan kita buat. CakePHP meletakkan semua file konfigurasi tersebut pada direktori app/config.

1. Konfigurasi Database

CakePHP menyimpan konfigurasi database yang dipakai oleh aplikasi web dalam sebuah file dengan namadatabase.php. Contohnya bisa kita temukan di file app/config/database.php.default. Ubah nama file tersebut menjadi database.php dan sesuaikan konfigurasi database yang ada pada file tersebut.

Berikut ini contoh konfigurasi database pada CakePHP:

class DATABASE_CONFIG {

public $default = array(

‘datasource’ => ‘Database/Mysql’,

‘persistent’ => false,

‘host’ => ‘localhost’,

‘login’ => ‘root’,

‘password’ => ”,

‘database’ => ‘cakephp’,

‘prefix’ => ”,

//’encoding’ => ‘utf8’,

);

public $test = array(

‘datasource’ => ‘Database/Mysql’,

‘persistent’ => false,

‘host’ => ‘localhost’,

‘login’ => ‘root’,

‘password’ => ”,

‘database’ => ‘cakephp’,

‘prefix’ => ”,

//’encoding’ => ‘utf8’,

);

}

2. Konfigurasi Core

Edit file app/config/core.php dan ubah nilai Security.salt dan Security.chiperSeed.

/**

* A random string used in security hashing methods.

*/

Configure::write(‘Security.salt’, ‘DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mialfin’);

/**

* A random numeric string (digits only) used to encrypt/decrypt strings.

*/

Configure::write(‘Security.cipherSeed’, ‘768593096574535424967496836452383’);

Kedua variabel tersebut harus kita ubah, kalau tidak akan muncul peringatan (notice) pada tampilan default homepage aplikasi web yang kita buat seperti terlihat pada gambar di atas.

Struktur Database

Langkah pertama, buat tabel di database cakephp dengan struktur sebagai berikut:

CREATETABLE books (

id INTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,

title VARCHAR(100)NULL,

author VARCHAR(100)NULL,

description TEXT NULL,

price DECIMAL(10,2)NULL,

created DATETIME NULL,

modified DATETIME NULL,

PRIMARYKEY(id)

);

Tambahkan beberapa data ke dalam tabel tersebut:

INSERT INTO `books` (`id`, `title`, `author`, `description`, `price`, `created`, `modified`) VALUES

(1, ‘Learning jQuery 1.3’, ‘Jonathan Chaffer, Karl Swedberg’, ”, 40.00, NOW()),

(2, ‘jQuery in Action, Second Edition’, ‘Bear Bibeault dan Yehuda Katz’, ”, 50.00, NOW()),

(3, ‘Hubby La Vita Nova’, ‘Alfin Arifin’, ‘buku ini menceritakan kisah cinta antara anak calon Paskibraka Provinsi Jawa Barat’, 35000.00, NOW()),

(4, ‘Aplikasi Pengajuan Judul TA’, ‘Samsul Arifin’, ‘Aplikasi ini di buat untuk tujuan membantu para Mahasiswa untuk mengajukan judul Tugas Akhir mereka’, 50.00, NOW());

Pada kasus ini saya sengaja memberi nama tabel sesuai aturan (konvensi) pada CakePHP, yaitu menggunakan kata plural (books) dan primary key id. Namun demikian, aturan ini tidak terlalu mengikat, dengan kata lain kita boleh juga tidak mengikuti aturan tersebut.

Model

Model adalah representasi dari data. Pada CakePHP, file class untuk mendefinisikan Model harus diletakkan di folder /app/models. Ada beberapa cara untuk mendefinisikan class Model, yaitu:

Cara 1:

<?php

/* File: /app/models/books.php */

class Book extends AppModel {

var$name=’Book’;

}

?>

Cara ini bisa kita pakai apabila kita mengikuti aturan yang telah ditentukan oleh CakePHP, yaitu nama tabel merupakan bentuk plural dari nama model dan CamelCase, serta primary key dari tabel tersebut menggunakan nama field id.

Cara 2:

<?php

/* File: /app/models/books.php */

class Book extends AppModel {

var $name = ‘Book’;

var $useTable = ‘books’;

var $primaryKey = ‘id’;

}

?>

Cara kedua ini lebih fleksibel karena kita tidak harus mengikuti aturan CakePHP dalam hal penamaan tabelnya. Dengan demikian pada kasus ini kita bisa saja menggunakan nama tabel daftar_buku danprimary key id_buku.

Controller

Langkah selanjutnya, kita buat sebuah controller dengan nama books_controller.php. Simpan file tersebut di folder /app/controllers/.

<?php

/* File: /app/controllers/books_controller.php */

class BooksController extends AppController {

var $name = ‘Books’;

function index() {

$this->set(‘books’, $this->Book->find(‘all’));

}

}

?>

Secara otomatis deklarasi class BooksController di atas akan memanggil class Model dengan nama Book. Namun demikian kita bisa juga menentukan model mana saja yang akan dipakai pada controller tersebut dengan variabel $uses. Contohnya yaitu sebagai berikut:

<?php

class BooksController extends AppController {

var$name=’Books’;

var$uses=array(‘Book’,’OtherModel’);

}

?>

Pada contoh kode di atas, model yang dipakai ada dua, yaitu Book dan OtherModel. Sedangkan apabila kita tidak memerlukan Model pada Controller, kita bisa mendeklarasikan variabel $uses tersebut dengan array kosong seperti contoh berikut ini.

<?php

class BooksController extends AppController {

var$name=’Books’;

var$uses=array();

}

?>

Tambahkan fungsi index pada class tersebut untuk menampilkan daftar buku. Fungsi index merupakan fungsi spesial pada CakePHP karena kita bisa mengaksesnya hanya dengan menyebutkan namacontroller-nya saja. Dengan demikian untuk kasus ini kita bisa mengaksesnya lewat browser dengan alamat URL http://localhost/cakephp/books/index atau http://localhost/cakephp/books.

<?php

/* File: /app/controllers/books_controller.php */

class BooksController extends AppController {

var$name=’Books’;

function index(){

$this->set(‘books’,$this->Book->find(‘all’));

}

}

?>

Fungsi set() pada cuplikan kode di atas berguna untuk mengisi variabel dengan nilai tertentu yang nantinya bisa diakses oleh View. Pada kasus ini, variabel yang saya maksudkan yaitu books.

View

View merupakan komponen yang bertugas untuk mengatur tampilan yang akan dikirimkan ke web browser. Pada CakePHP view terletak pada folder /app/views dan dikelompokkan dalam folder tertentu yang diberi nama sesuai dengan nama controller-nya.

Sebagai contoh, berhubung nama controller pada aplikasi ini adalah Books (sesuai dengan deklarasi variabel $name pada BooksController), maka kita harus membuat folder books di /app/views. Selanjutnya, di dalam folder books tersebut kita harus membuat file view untuk mengatur tampilan web. Nama file tersebut harus sesuai dengan nama fungsi pada controller dan menggunakan ekstensi .ctp.

Sebagai contoh, berikut ini view untuk mengatur tampilan dari fungsi index di atas.

<script src=”../../../../jquery-1.7.2.min.js”></script>

<?php

/* File: /app/views/books/index.ctp */

?>

<h1><b>Daftar Buku</b></h1>

<table>

<tr>

<th><center>ID</center></th>

<th><center>Judul</center></th>

<th><center>Penulis</center></th>

<th><center>Harga</center></th>

<th><center>Deskripsi</center></th>

<th><center>Tgl Entri</center></th>

</tr>

<?php foreach ($books as $book): ?>

<tr>

<td><?php echo $book[‘Book’][‘id’] ?></td>

<td><?php echo $book[‘Book’][‘title’] ?></td>

<td><?php echo $book[‘Book’][‘author’] ?></td>

<td><?php echo $book[‘Book’][‘price’] ?></td>

<td><?php echo $book[‘Book’][‘description’] ?></td>

<td><?php echo $book[‘Book’][‘created’] ?></td>

</tr>

<?php endforeach ?>

</table>

Nilai variabel $books pada file view di atas diperoleh dari pemanggilan fungsi set() pada Controller seperti yang telah saya jelaskan sebelumnya. Jalankan kode di atas dengan cara mengetikkan URLhttp://localhost/cakephp/books di web browser.

Hasilnya adalah sebagai berikut:

Iklan