Update: 17 Mei 2014
Inilah tutorial pertama yang ada dalam situs Jagocoding.com. Ya, selama 2 bulan pengembangan situs mulai dari analisis, desain, dan coding akhirnya kami bisa meluncurkan juga situs ini. Untuk mendapatkan berita apapun tentang Jagocoding.com, kamu boleh buka http://blog.jagocoding.com, semua berita tentang Jagocoding.com dapat dilihat di sana.
Pada tutorial pertama ini saya suguhkan tutorial dasar untuk mempelajari salah satu framework populer di dunia PHP, yaitu Cakephp, yang mana situsnya dapat kamu kunjungi di cakephp.org. Jika dulu di harian.cheyuz.com sebelumnya saya sering membuat tutorial tentang Codeigniter, kali ini di sini saya akan buat tutorial framework lain. Yah kita jangan mempelajari sesuatu itu hanya satu, karena ilmu tentang bahasa pemrograman itu sangat luas jadi alangkah baiknya kita mempelajari ilmu yang lain juga.
Silakan pelajari tutorial ini dengan sebaik-baiknya, berhubung tutorial Cakephp itu publikasi dokumentasinya sangat sedikit (mungkin di Indonesia) jadi saya di sini akan mengupas tuntas tutorial mulai dari tahap instalasi hingga menjadi sebuah aplikasi, tentunya aplikasi dasar ya masih berupa CRUD, yang nantinya kita kembangkan menjadi aplikasi yang luar biasa, hehehe.. Nah, aplikasi yang akan kita buat adalah aplikasi blog. Nah lho, pertanyaannya kenapa setiap tutorial framework pasti membuat aplikasi blog? soalnya membuat blog itu cukup mewakili kasus CRUD dan juga proses lainnya. Blog yang akan kita buat juga terdapat kategori, excerpt, dan slug. Jadi, nanti kita akan belajar banyak bagaimana membuat blog yang sederhana.
OK, kita lanjut ke tutorial.
Instalasi
Untuk server, kita gunakan XAMPP dan diasumsikan bahwa OS yang digunakan adalah Windows, bukan Linux (berhubung kebanyakan memakai Windows). Kemudian install XAMPP di C:\, jadi diasumsikan juga bahwa folder htdocs itu terdapat di path C:\xampp\htdocs\. Untuk tahap pertama adalah download framework Cakephp terbaru di sini:
https://github.com/cakephp/cakephp/zipball/2.5.0
kemudian, setelah itu file zip tersebut diextract ke C:\xampp\htdocs\ dan ganti folder cakephp-cakephp-xxxxxxx menjadi nama aplikasi kamu, misalnya blogku.
Kemudian, setelah itu kamu akan melihat warning/notice berikut ini:
Notice (1024): Please change the value of 'Security.salt' in app/Config/core.php to a salt value specific to your application [CORE\Cake\Utility\Debugger.php, line 851]
Notice (1024): Please change the value of 'Security.cipherSeed' in app/Config/core.php to a numeric (digits only) seed value specific to your application [CORE\Cake\Utility\Debugger.php, line 855]
Jangan khawatir, itu normal kok hehe... itu menandakan Security.salt belum kita setting di file app/Config/core.php, silakan ubah security salt dan security cipherseed di file C:\xampp\htdocs\blogku\app\Config\core.php.
Kemudian pengecekan lainnya yang dilakukan oleh Cakephp adalah versi PHP kamu, pastikan versi PHP kamu adalah PHP 5 atau lebih tinggi, soalnya Cakephp tidak mendukung PHP 4. Setelah itu, pengecekan lainnya adalah folder tmp pastikan writtable. Dan pengecekan terakhir adalah database. Akan ada tulisan seperti ini berlatar belakang kuning:
Your database configuration file is NOT present. Rename APP/Config/database.php.default to APP/Config/database.php
Cakephp menyuruh kita supaya menghilangkan ekstensi .default pada file /blogku/app/Config/database.php.default menjadi database.php supaya Cakephp dapat mengakses database kita. Dan jangan lupa edit file database.php menjadi seperti berikut ini:
<?php ... ... class DATABASE_CONFIG { public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'root', 'password' => '', 'database' => 'db_blog', 'prefix' => '', //'encoding' => 'utf8', ); public $test = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'root', 'password' => '', 'database' => 'db_blog', 'prefix' => '', //'encoding' => 'utf8', ); } ?>
Diasumsikan bahwa nama database yang akan kita buat nanti bernama db_blog, username root, dan password kosong (default XAMPP).
Database
OK silakan buat database di mysql kamu dengan nama database db_blog dan execute SQL berikut pada mySQL kamu:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; CREATE TABLE IF NOT EXISTS `artikel` ( `id` int(11) NOT NULL AUTO_INCREMENT, `judul` varchar(125) NOT NULL, `slug` varchar(125) NOT NULL, `konten` text NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; INSERT INTO `artikel` (`id`, `judul`, `slug`, `konten`, `created`, `modified`) VALUES (1, '7 Jenis Makanan yang Baik untuk Kesehatan', '', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sagittis pharetra urna ac hendrerit. Sed posuere consequat metus vestibulum interdum. Quisque vitae ullamcorper sapien.', '2012-05-02 20:29:27', '0000-00-00 00:00:00'), (2, '20 Binatang Super Aneh', '', 'Nunc lacinia magna velit, eget luctus ligula. Vestibulum at elementum metus. Praesent sodales, nunc nec ullamcorper accumsan, ipsum tellus malesuada nunc, vel commodo tortor massa ut nibh.', '2012-05-02 20:29:27', '0000-00-00 00:00:00'), (3, '10 Makanan Tidak Sehat', '', 'Aenean nec justo nec lectus imperdiet elementum quis ac sem. Phasellus augue mi, auctor quis elementum a, tincidunt in nulla. Donec feugiat arcu et mi dignissim lobortis.', '2012-05-02 20:30:59', '0000-00-00 00:00:00');
Maka sekarang terdapat satu table yaitu artikel. Karena masih basic, untuk sementara kita bekerja dengan satu tabel terlebih dahulu, jangan dulu memakai kategori. Nanti di tutorial bagian berikutnya kita akan bekerja dengan relasi model, yaitu dengan model kategori yang nanti akan kita buat. Berikut ini adalah bentuk struktur tabel artikel.
Field | Type |
---|---|
id | INT |
judul | VARCHAR( 125 ) |
slug | VARCHAR( 125 ) |
konten | TEXT |
created | TIMESTAMP |
modified | TIMESTAMP |
Setting MVC di CakePHP
Ok sekarang kita akan belajar bagaimana cara membuat Controller, View, dan Model yang akan kita pakai dengan menggunakan CakePHP. Jika kamu sudah terbiasa menggunakan framework, tentu sudah tidak asing lagi mendengar istilah-istilah tersebut.
Pertama, kita buat Model terlebih dahulu. Sebelumnya, perhatikan aturan-aturan penamaan pada CakePHP. Secara default, penamaan tabel di CakePHP menggunakan bahasa Inggris dan harus plural. Tetapi karena kita menggunakan ejaan bahasa Indonesia, kita akan menggunakan variable-variable yang kita definisikan. Secara aturan, nama model adalah sama dengan (=) nama table tetapi tidak plural (single). Misalnya, nama tabel adalah articles, maka nama model adalah Article. Tetapi, kita tidak terpaku harus mematuhi aturan tersebut. Karena tabel kita bahasa Indonesia (artikel), maka kita abaikan aturan tersebut dan memakai variable namanya $useTable.
Kita buat model yang bernama Artikel.php di dalam direktori /app/Model/. Isi dari file Artikel.php adalah:
<?php class Artikel extends AppModel { public $useTable = 'artikel'; }
Kita menggunakan $useTable karena kita tidak memakai aturan default, jika tidak maka kita harus membuat table yang namanya "artikels", dan itu tidak wajar karena berbahasa Indonesia.
Setiap field id secara default akan menjadi Primary Key, tetapi kita bisa menentukan sendiri jika primary key kita bukan id, misalnya id_artikel, maka tinggal menambahkan public $primaryKey = 'id_artikel'. Pada kasus ini, kita tidak perlu menambahkan variable tersebut karena primary key sudah bernama "id".
Ok, membuat model sudah selesai, walaupun belum sempurna. Kita belum menambahkan validasi dan relasi terhadap model lain. Nanti di tutorial berikutnya akan kita lakukan pengembangan dari model ini.
Setelah model dibuat, selanjutnya buatlah Controller.
Kita buat controller yang bernama ArtikelController.php di dalam direktori /app/Controller/. Isi dari file ArtikelController.php adalah:
<?php class ArtikelController extends AppController { public $uses = array('Artikel'); function index() { } }
Kita sudah membuat controller bernama 'artikel' dan function index. Jika kamu ingin mengecek apakah controller dan model sudah bisa diakses, silakan buka di browser kamu: http://localhost/blogku/artikel/index atau http://localhost/blogku/artikel (sama saja). Struktur url yang ada pada CakePHP adalah: http://[nama_aplikasi]/[controller]/[action]/[parameter1]/[parameter2]/[parameter3]/... Jika kita buka, maka akan keluar pesan sebagai berikut:
"The view for ArtikelController::index() was not found."
Berarti kita belum membuat view untuk controller tersebut. Ayo kita buat viewnya! Caranya adalah dengan membuat direktori Artikel dan membuat file index.ctp ke dalam direktori /app/View/Artikel/. Secara default, nama view harus sama dengan nama function, jadi kita buat namanya index.ctp. Nama direktori harus sama dengan nama Controller. Isikan kode html sebagai berikut:
<h1>Data Artikel</h1>
Jika sudah, silakan direfresh halaman yang tadi. Kini keluar tulisan heading 1 "Data Artikel". Selamat, Kamu berhasil membuat MVC sederhana dengan menggunakan CakePHP. Sekarang, ayo kita tampilkan data di dalam table artikel.
Menampilkan Data
Kode untuk mengambil semua data sangat mudah dengan menggunakan CakePHP, cukup dengan memanggil function find('all'). Buka file /app/Controller/ArtikelController.php dan tambahkan kode php untuk mengambil semua data.
<?php class ArtikelController extends AppController { public $uses = array('Artikel'); function index() { $artikel = $this->Artikel->find('all'); $this->set('artikel', $artikel); } }
Kita mengisikan hasil seleksi data untuk tabel artikel ke dalam variable $artikel, yang selanjutnya set variable $artikel untuk bisa diakses di view. $this->set() adalah function bawaan CakePHP untuk mengeset variable yang ada di view dari controller.
Untuk menampilkan data di View, ubah file /app/View/Artikel/index.ctp tadi menjadi sebagai berikut:
<h1>Data Artikel</h1> <table> <thead> <tr> <th>ID</th> <th>Judul</th> <th>Konten</th> <th>Tanggal Dibuat</th> </tr> </thead> <tbody> <?php foreach ($artikel as $a): ?> <tr> <td><?php echo $a['Artikel']['id'] ?></td> <td><?php echo $a['Artikel']['judul'] ?></td> <td><?php echo $a['Artikel']['konten'] ?></td> <td><?php echo $a['Artikel']['created'] ?></td> </tr> <?php endforeach ?> </tbody> </table> <?php debug($artikel) ?>
Jreng jreng, data yang ada di dalam tabel artikel muncul semua, hehe..
variable $artikel kini menjadi sebuah array yang bentuknya adalah:
array( 0 => array( 'Artikel' => array( 'id' => '1', 'judul' => '7 Jenis Makanan yang Baik untuk Kesehatan', 'slug' => '', 'konten' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sagittis pharetra urna ac hendrerit. Sed posuere consequat metus vestibulum interdum. Quisque vitae ullamcorper sapien.', 'created' => '2012-05-02 20:29:27', 'modified' => '0000-00-00 00:00:00' ) ), 1 => array( 'Artikel' => array( 'id' => '2', 'judul' => '20 Binatang Super Aneh', 'slug' => '', 'konten' => 'Nunc lacinia magna velit, eget luctus ligula. Vestibulum at elementum metus. Praesent sodales, nunc nec ullamcorper accumsan, ipsum tellus malesuada nunc, vel commodo tortor massa ut nibh.', 'created' => '2012-05-02 20:29:27', 'modified' => '0000-00-00 00:00:00' ) ), 2 => array( 'Artikel' => array( 'id' => '3', 'judul' => '10 Makanan Tidak Sehat', 'slug' => '', 'konten' => 'Aenean nec justo nec lectus imperdiet elementum quis ac sem. Phasellus augue mi, auctor quis elementum a, tincidunt in nulla. Donec feugiat arcu et mi dignissim lobortis.', 'created' => '2012-05-02 20:30:59', 'modified' => '0000-00-00 00:00:00' ) ) );
Jadi untuk mengaksesnya dengan menggunakan foreach seperti tadi.
Cukup untuk tutorial kali ini, pada tutorial selanjutnya (Tutorial CakePHP Dasar Part II - Manipulasi Data CRUD) kita akan belajar untuk menambahkan data, mengubah, dan menghapus dengan menggunakan CakePHP.
Stand by with me,
Follow saya supaya kamu tetap berlangganan dengan artikel saya.