Beranda > CakePHP > Konsep Dasar CakePHP (bag III)

Konsep Dasar CakePHP (bag III)

Sebelum memulai konfigurasi di Cake, saya minta anda untuk membuat suatu database bernama ‘blogcake’ lebih dulu. Silahkan buka phpMyAdmin dari web browser anda, cari kolom Create new database, ketik blogcake, kemudian klik tombol create. Jika benar, anda akan lanjut ke halaman baru yang menyatakan anda telah sukses membuat database baru dan anda sudah langsung memakai database tersebut. Sekarang klik tab SQL yang ada di atas frame sebelah kanan. Copy query berikut dan paste ke text area di halaman tersebut.

CREATE TABLE posts (

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

title VARCHAR(50),

body TEXT,

created DATETIME DEFAULT NULL,

modified DATETIME DEFAULT NULL

);

/* Kemudian masukkan beberapa Post untuk testing*/

INSERT INTO posts (title,body,created)

VALUES (‘The title’, ‘This is the post body.’, NOW());

INSERT INTO posts (title,body,created)

VALUES (‘A title once again’, ‘And the post body follows.’, NOW());

INSERT INTO posts (title,body,created)

VALUES (‘Title strikes back’, ‘This is really exciting! Not.’, NOW());

Klik go. Selanjutnya baru kita memulai tahap konfigurasinya.

Section 1

Konfigurasi Database

Konfigurasi database pada Cake terdapat pada file app/config/database.php. Namun pada instalasi awal Cake tidak terdapat file tersebut, jadi anda harus mengcopy dari file database.php.default. Ubah namanya menjadi database.php saja.Buka file tersebut dengan web editor anda (Dreamweaver, Notepad++, EditPlus, atau yang lain) lihat pada bagian:

var $default = array(‘driver’ => ‘mysql’,

‘connect’ => ‘mysql_connect’,

‘host’ => ‘localhost’,

‘login’ => ‘user’,

‘password’ => ‘password’,

‘database’ => ‘project_name’,

‘prefix’ => ”);

Ubah bagian login dan password sesuai setting MySQL anda. Kemudian ‘project_name’ pada database menjadi blogcake seperti yang sudah kita buat tadi.

Catatan untuk variabel ’prefix’ : jika anda memasukkan string ke dalamnya, maka jika anda melakukan query SQL untuk tabel akan mengarah ke prefix_namatabel. Contoh jika anda punya tabel posts seperti di atas, dan ’prefix’=>’blog_’, maka query akan mengarah ke ‘blog_posts’. Sekali anda mendefinisikan prefix, keseluruhan tabel dalam database harus mendapat imbuhan prefix tersebut. Dan untuk tabel HABTM join, anda cukup menambah prefix sekali: blog_categories_posts, bukan blog_categories_blog_posts.

CakePHP mendukung beberapa driver dabatabase berikut:

1. mysql

2. postgres

3. sqlite

4. pear-drivername (contoh pear-mysql)

5. adodb-drivername

Kata kunci ‘connect’ pada koneksi $default mempersilahkan anda untuk menentukan apakah koneksi akan persistent atau tidak. (Baca komentar pada file database.php untuk menentukan tipe koneksi lebih lanjut). Sementara pada tutorial ini, kita isi dengan ‘mysql_connect’ saja.

Selain itu, tabel dalam database anda juga harus mengikuti konvensi yang digunakan Cake. Memang kelihatannya cukup merepotkan pada mulanya, namun anda cukup percaya saja, kelak anda akan merasakan manfaatnya ketika memulai memaintenance aplikasi web anda, dan anda akan ‘tersihir’ bagaimana Cake dapat menghasilkan aplikasi berskala besar dengan cepatnya jika anda benar-benar mengikuti aturan Cake.Selain itu, anda bisa mendaftarkan aplikasi anda ke komunitas open source Cake. Ok, inilah aturan untuk tabel:

1. Nama tabel biasanya berupa kata jamak/plural dalam bahasa Inggris, seperti “users, posts, polls”. Sebenarnya dalam bahasa Indonesia pun tidak masalah, cukup dengan menambahkan akhiran –s dibelakang nama tabel, contoh: “artikels, divisis, kategories”. Namun untuk Model (ingat konsep MVC-nya) untuk tabel yang bersangkutan nama modelnya berupa kata tunggal.

2. Dalam tabel harus ada primary key bernama ‘id’.

3. Jika ada relasi, gunakan foreign key seperti ‘article_id’. Nama tabel berupa kata tunggal/singular, diikuti underscore, kemudian diakhiri ‘id’.

4. Jika dalam tabel terdapat kolom ‘created’ dan/atau ‘modified’, Cake secara otomatis akan mengisinya sesuai dengan keadaan.

Selain $default dalam database.php, anda juga akan melihat seting $test connection di bawahnya. Silahkan isi sesuka anda dengan aturan sama seperti di atas, kemudian anda bisa menggunakannya dengan cara seperti:

var $useDbConfig = ‘test’;

Sampai disini, kita akan kembali mengetes instalasi Cake kita. Jika benar, anda akan mendapatkan hasil seperti ini:

Section 2


Konfigurasi Umum

Konfigurasi umum/global Cake dapat ditemukan pada file app/config/core.php. Sebenarnya tidak ada yang anda perlu ubah untuk tutorial ini, namun saya akan tetap memberitahu anda beberapa point penting di file ini.

DEBUG: defaultnya bernilai ‘1’, akan menampilkan pesan kesalahan pada kode yang anda buat pada aplikasi anda. Jika anda mengeset ke ‘2’, maka hasil query SQL akan ditampilkan di sisi bawah layar halaman. Selain 0, Cake akan merender error page sesuai kesalahan code pada aplikasi anda, seperti “Missing Controller”, “Missing Action”, dll.

CAKE_SESSION_COOKIE: ubah nilainya ke nama cookie yang anda gunakan untuk user session di aplikasi anda.

CAKE_SECURITY: ubah nilai ini untuk menentukan pengecekan level session. Cake akan menentukan akhir session, menggenerate session ids baru, dan menghapus session lama berdasar nilai yang anda masukkan. Nilai yang bisa anda tulis adalah:

1. high: session akan berakhir setelah 10 menit dari tidak adanya aktifitas apapun, session ids diregenerasi pada setiap request.

2. medium: session akan berakhir setelah 20 menit dari tidak adanya aktifitas apapun.

3. low: session akan berakhir setelah 30 menit dari tidak adanya aktifitas apapun.

CAKE_SESSION_SAVE: menentukan bagaimana data session akan disimpan. Silahkan memasukkan salah satu nilai berikut (urut dari yang paling low-security sampai high-security):

1. cake: data session akan disimpan dalam tmp/ di instalasi Cake anda.

2. php: data session akan disimpan sesuai definisi php.ini.

3. database: data session akan disimpan ke suatu tabel sesuai di variabel $default, biasanya bernama cake_sessions. Di artikel lain saya akan mencontohkan penggunaan database untuk penanganan sessions. Namun sementara ini kita setting ke ‘php’ dulu.

Section 3


Konfigurasi Routing

Routing merupakan bagian dari mod_rewrite PHP yang dapat ‘memetakan’ URL ke controller/action/params. Dengan routing URL bisa lebih cantik dan lebih dapat dikonfigurasi. Routing dapat ditentukan lewat file app/config/routes.php. Pattern/pola yang digunakan untuk routing seperti berikut:

$Route->connect (‘URL’, array(‘controller’=>’controllername’, ‘action’=>’actionname’, ‘firstparam’))

Dimana:

1. URL adalah regular expression (regex) dari URL Cake yang akan anda petakan,

2. controllername adalah nama controller yang anda akan sertakan

3. actionname adalah nama action dari controller

4. firstparam adalah nilai parameter pertama dari action yang anda tentukan

Parameter lain yang menyertai firstparam akan dipassing sebagai parameter ke action controller.

Dalam tutorial ini tidak ada yang perlu diubah dari file konfigurasi routing tersebut.

Section 4


Konfigurasi Routing Lanjut: Admin dan Webservices

Masih dalam file yang sama (/app/config.core.php) anda bisa mengatur penanganan URL untuk admin dan webservices. Hal pertama yang kita bahas adalah routing URL admin. Tentu dalam aplikasi yang kita buat, ada hak istimewa sebagai admin yang kita berikan kepada user tertentu (Lebih lanjut tentang pemberian hak akses akan kita pelajari di fitur ACL=Access Control List). Biasanya saya lebih menyukai URL berbentuk /admin/posts/add atau /admin/posts/edit daripada /posts/adminAdd atau /posts/adminEdit.

Untuk mengaktifkan fungsi ini di Cake, yang pertama kali dilakukan adalah menghilangkan komentar berupa tanda double slash (//) dari CAKE_ADMIN pada file /app/config/core.php. Nilai default dari CAKE_ADMIN ini adalah ‘admin’, tapi anda juga bisa mengubahnya ke nilai lain yang anda suka, seperti ‘superuser’, ‘su’, ‘atur’, dll. Ingatlah nilai yang anda masukkan ini, karena akan digunakan untuk controller (akan dibahas nanti). Nantinya, action dari admin ini akan bernama namaadmin_namaaction(). Berikut beberapa contoh URL, CAKE_ADMIN, dan action di controller:

/admin/products/add CAKE_ADMIN = ‘admin’

Nama action di ProductsController = ‘admin_add()’


/superuser/news/post CAKE_ADMIN = ‘superuser’

Nama action di NewsController = ‘superuser_post()’


/su/posts/delete CAKE_ADMIN = ‘su’

Nama action di PostsController = ‘su_delete()’


Setelah diset variabel CAKE_ADMIN, maka anda dapat dengan mudah menggunakan routing admin ini dengan menggunakan:

$this->params[CAKE_ADMIN];

atau

$this->params[‘admin’];

(dengan anggapan bahwa ‘admin adalah variabel dari CAKE_ADMIN).

Sesuai dengan catatan dari manual yang ada pada situs CakePHP.org bahwa dengan mengaktifkan routing admin ini tidak berarti anda menggunakan metode otentifikasi ataupun security tertentu. Anda harus mengesetnya sendiri, yang akan dijelaskan di chapter lain. (Sekali lagi) Sabar…

Dengan cara yang sama, anda dapat mengaktifkan routing untuk fitur webservices sama mudahnya. Pertama, set WEBSERVICES di file yang sama ke ‘on’, kemudian anda tinggal menambahkan beberapa logic di Controller anda. Jadi, dengan mengaktifkan WEBSERVICES ini anda mengaktifkan suatu hal yang hampir sama dengan routing admin, kecuali beberapa prefix untuk routing ini sudah tersedia, seperti:

1. rss

2. xml

3. rest

4. soap

5. xmlrpc

Nantinya anda akan punya alternative View yang bisa diakses pada /rss/namaController/namaAction atau /soap/namaController/namaAction. Anda cukup membuat satu action untuk dua view: satu untuk halaman HTML biasa, dan yang lain untuk pemakai webservice.

Kategori:CakePHP
  1. dicky
    5 Agustus 2008 pukul 12:44

    wah makasih banyak om atas tulisannnya yang gamblang dan jelas pake bahasa indonesia…..

    soalnya aye lagi belajar cakephp membuat 1 aplikasi.

  2. Tomy
    9 November 2008 pukul 22:25

    trus cara buat web service nya gmana mas?

    misalkan aja database nya isinya nama negara trus mo nyajiin nama negara yg berawal huruf ‘A’

    mohon bimbingannya..

  3. 21 Desember 2008 pukul 12:08

    mantap tutorialnya mas, saya tunggu kelanjutannya yah..

  4. 21 Juli 2010 pukul 13:41

    wow, lumayan komplit. thanks ya😀

  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: