Validasi Form dengan CakePHP Oleh: Cecep Yusuf
Di sini akan dipelajari bagaimana cara membuat validasi server pada model untuk form dengan menggunakan framework CakePHP.
Hmm.. Sudah lama juga saya tidak membuat tutorial di website tercinta ini. Tetapi walopun saya tidak membuat tutorial, saya senang karena semakin ke sini ternyata semakin banyak visitor jagocoding.com ini. Visitor tidak hanya sekedar pembaca, anggotanya pun semakin ke sini semakin ke sana. Tetapi sayangnya masih banyak yang belum ingin menjadi anggota di forum ini cuma karena daftarnya harus ada verifikasi e-mail. Padahal, banyak banget manfaatnya kalo sudah daftar di situs ini, mulai dari bisa diskusi dan berkenalan dengan para "jago coding". Silakan dibaca di sini. Oke, tutorial kali ini adalah kita akan membuat validasi form dengan menggunakan CakePHP. Untuk contoh kasusnya, kita akan membuat sebuah form registrasi yang mana mengharuskan pengguna untuk mengisi seluruh form yang harus diisi/required, validasi e-mail, url, dan password yang harus sama dengan input 'confirm password', termasuk minimal dan maksimal huruf yang dimasukkan. Sebelum membuat validasi, ada baiknya temen2 mempelajari tutorial dasar CakePHP yang ada di sini: http://jagocoding.com/tag/tutorial-dasar Langkah pertama yang harus dilakukan adalah membuat table untuk database yang akan digunakan. Diasumsikan di sini bahwa temen2 sudah mengkonfigurasi CakePHP dengan benar, jadi saya tidak akan menjelaskan terlalu banyak mengenai setting awal pada CakePHP. Untuk membuat table, silakan copy syntax mysql di bawah ini, kemudian execute di mysql temen2: CREATE TABLE IF NOT EXISTS `pengguna` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nama_lengkap` varchar(125) NOT NULL, `alamat` text NOT NULL, `email` varchar(125) NOT NULL, `website` varchar(125) NOT NULL, `username` varchar(125) NOT NULL, `password` varchar(125) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Setelah itu, untuk memudahkan proses selanjutnya, kita akan menentukan rule-rule untuk setiap validasi field yang akan kita gunakan sebelum ke tahap programming. ● ● ● ● ●
field Nama Lengkap harus diisi, tidak boleh kosong, dan minimal 2 huruf field Alamat harus diisi, tidak boleh kosong field E-Mail harus diisi, dan format yang diinputkan harus sesuai dengan format e-mail yang benar field Website tidak wajib diisi, tetapi harus sesuai dengan format URL yang benar field Username dan password harus diisi, dan minimal 5 huruf, dan maksimal 20 huruf, mengandung huruf dan angka
Setelah kita menentukan rule-rulenya, maka tahap selanjutnya adalah membuat model pada CakePHP untuk tabel pengguna. Yuk kita buat modelnya di /app/Model/ dengan nama file Pengguna.php, dengan isi filenya adalah sebagai berikut: array( 'rule' => array('minLength', '2'), //minimal 2 huruf 'required' => true, //tidak boleh kosong, required 'message' => 'Mohon masukkan minimal 2 huruf' ), 'alamat' => array( 'rule' => 'notEmpty', //tidak boleh kosong 'message' => 'Alamat tidak boleh kosong' ), 'email' => array( 'rule' => 'email', //harus format e-mail 'required' => true, 'message' => 'Format e-mail harus benar' ), 'website' => array( 'rule' => 'url', //harus format url 'message' => 'Format URL harus benar'
), 'username' => array( 'alphaNumeric' => array( 'rule' => 'alphaNumeric', //harus format e-mail 'required' => true, 'message' => 'Username harus huruf dan angka' ), 'between' => array( 'rule' => array('between', 5, 20), 'message' => 'Username minimal 5 dan maksimal 20 karakter' ) ), 'password' => array( 'alphaNumeric' => array( 'rule' => 'alphaNumeric', //harus format e-mail 'required' => true, 'message' => 'Password harus huruf dan angka' ), 'between' => array( 'rule' => array('between', 5, 20), 'message' => 'Password minimal 5 dan maksimal 20 karakter' ) ), ); Jadi, kode secara lengkapnya untuk model adalah: array( 'rule' => array('minLength', '2'), //minimal 2 huruf 'required' => true, //tidak boleh kosong, required 'message' => 'Mohon masukkan minimal 2 huruf' ), 'alamat' => array( 'rule' => 'notEmpty', //tidak boleh kosong 'message' => 'Alamat tidak boleh kosong' ), 'email' => array( 'rule' => 'email', //harus format e-mail 'required' => true, 'message' => 'Format e-mail harus benar' ), 'website' => array( 'rule' => 'url', //harus format url 'message' => 'Format URL harus benar'
), 'username' => array( 'alphaNumeric' => array( 'rule' => 'alphaNumeric', //harus format e-mail 'required' => true, 'message' => 'Username harus huruf dan angka' ), 'between' => array( 'rule' => array('between', 5, 20), 'message' => 'Username minimal 5 dan maksimal 20 karakter' ) ), 'password' => array( 'alphaNumeric' => array( 'rule' => 'alphaNumeric', //harus format e-mail 'required' => true, 'message' => 'Password harus huruf dan angka' ), 'between' => array( 'rule' => array('between', 5, 20), 'message' => 'Password minimal 5 dan maksimal 20 karakter' ) ), ); } Buatlah controller di folder /app/Controller dengan nama PenggunaController.php: request->data)) { if ($this->Pengguna->save($this->request->data)) { $this->Session->setFlash('Data berhasil disimpan'); $this->redirect('/'); } } } } Akan saya jelaskan kode di atas.
Kita menggunakan variable $uses untuk 'meload' model yang bernama Pengguna yang sudah kita buat sebelumnya. Kode ini wajib ditulis untuk menginisialisasikan program supaya dapat menjalankan model Pengguna. Di dalam function register kita mengecek terlebih dahulu (!empty) apakah data form sudah dikirim? ($this->request->data). Jika sudah, maka simpan data ke dalam model pengguna (save) dan tampilkan laporan "Data berhasil disimpan" dan redirect ke homepage. Kemudian buatlah folder baru untuk view pada folder /app/View/ dengan nama Member/ , dilanjutkan dengan membuat sebuah file bernama register.ctp (sesuai dengan nama controller Member dan nama function register()). Isi dari file register.ctp adalah:
Registrasi
Form->create('Pengguna'); echo $this->Form->input('nama_lengkap'); echo $this->Form->input('alamat'); echo $this->Form->input('email'); echo $this->Form->input('website'); echo $this->Form->input('username'); echo $this->Form->input('password'); echo $this->Form->submit('Daftar'); echo $this->Form->end(); ?> Tutorial selesai, temen2 dapat mencobanya dengan membuka URL http://localhost/nama_aplikasi/member/register. Silakan isikan secara salah, maka akan muncul pesan kesalahan di setiap field seperti screenshot di bawah ini.
Dan jika data yang kita masukkan benar (valid), maka akan diteruskan untuk disimpan ke dalam database. Selamat mencoba :)
Stand By With Me,
[email protected]
Tentang Penulis Cecep Yusuf Hi, my name is Cecep Yusuf. However, in the virtual world I am more likely to use the name Cheyuz, which is an abbreviation of two words "Cecep" and "Yusuf". I am founder of Jagocoding.com, u can view more of me in Cheyuz.com