Sanksi Pelanggaran Pasal 72 Undang-undang Nomor 19 Tahun 2002 Tentang Hak Cipta 1. Barangsiapa dengan sengaja melanggar dan tanpa hak melakukan perbuatan sebagaimana dimaksud dalam Pasal 2 Ayat (1) atau Pasal 49 Ayat (1) dan Ayat (2) dipidana dengan pidana penjara masing-masing paling singkat 1 (satu) bulan dan/atau denda paling sedikit Rp 1.000.000,00 (satu juta rupiah), atau pidana penjara paling lama 7 (tujuh) tahun dan/atau denda paling banyak Rp 5.000.000.000,00 (lima miliar rupiah). 2. Barangsiapa dengan sengaja menyiarkan, memamerkan, mengedarkan, atau menjual kepada umum suatu ciptaan atau barang hasil pelanggaran hak cipta atau hak terkait sebagai dimaksud Ayat (1) dipidana dengan pidana penjara paling lama 5 (lima) tahun dan/atau denda paling banyak Rp 500.000.000,00 (lima ratus juta rupiah). Te k n i k C e p a t M e m b a n g u n Aplikasi Web Dengan Framework CakePHP AGUS SAPUTRA www.bukulokomedia.com TEKNIK CEPAT MEMBANGUN APLIKASI WEB DENGAN FRAMEWORK CAKEPHP Perpustakaan Nasional : Katalog Dalam Terbitan (KDT) Penulis : Agus Saputra TEKNIK CEPAT MEMBANGUN APLIKASI WEB DENGAN FRAMEWORK CAKEPHP - Cet. I. - Yogyakarta : Penerbit Lokomedia, 2011 143 hlm; 14 x 21 cm ISBN : 978-979-1758-72-7 Penerbit Lokomedia, Cetakan Pertama : Februari 2011 Editor : Lukmanul Hakim Cover : Subkhan Anshori Layout : Lukmanul Hakim Diterbitkan pertama kali oleh : Penerbit Lokomedia Jl. Jambon, Perum. Pesona Alam Hijau 2 Kav. B-4, Kricak Yogyakarta 55242. email : [email protected] website : www.bukulokomedia.com Copyright © Lokomedia, 2011 Hak Cipta dilindungi oleh Undang-Undang Dilarang memperbanyak, mencetak ataupun menerbitkan sebagian maupun seluruh isi buku ini tanpa izin tertulis dari penerbit. Kata Pengantar Teknik Pemrograman berbasis OOP framework (Object Oriented Programming) telah menjadi trend pemograman saat ini, karena kemudahan, kecepatan dan pengerjaan yang terstruktur, membuat framework menjadi alternatif bagi programmer dalam mengembangkan suatu website. Tidak dipungkiri bahwa dimasa-masa mendatang, teknik pemograman PHP akan beralih kepada pemograman OOP. CakePHP sebagai salah satu framework yang cukup lengkap dan populer (saat ini menduduki peringkat 3) mulai dilirik oleh programmer, developer bahkan perusahaan karena kemampuannya yang handal. Namun terbatasnya panduan mengenai CakePHP, menjadi kesulitan tersendiri bagi mereka yang ingin menggunakannya, sehingga enggan dan memilih framework lain yang memiliki panduan lengkap sebagai pembuatan web. Buku ini hadir untuk menjawab permasalahan diatas. buku ini mengajak pembaca untuk mengubah pandangan bahwa CakePHP tidak sesulit yang dibayangkan dan akan memberikan efek lebih dibandingkan framework lain jika kita memahami betul tentang penggunaan CakePHP. Buku ini membahas tentang pengertian CakePHP, penginstalan dan konfigurasi, penanganan HTML dan database, operasi CRUD, teknik-teknik CakePHP, Components (Authentication, Session), hingga kepada praktek pembuatan web secara sederhana berbasis CakePHP. Penulis menyadari bahwa buku ini jauh dari sempurna, untuk itu penulis sangat mengharapkan kritik maupun saran yang membangun, sehingga dapat menulis lebih baik lagi untuk edisi-edisi mendatang. Akhir kata, penulis ucapkan terima kasih. Cirebon, November 2010 Agus Saputra [email protected] v Halaman ini Sengaja Dikosongkan vi Daftar Isi BAB 1. Pengenalan Dasar CakePHP..............................................................1 1.1. Apa itu CakePHP? .......................................................................................2 1.2. Keuntungan dan Kelemahan CakePHP........................................................3 1.3. Fitur-Fitur CakePHP.....................................................................................4 1.4. Mengenal Konsep MVC...............................................................................5 1.5. Struktur Folder CakePHP.............................................................................7 1.6. Kebutuhan Tools Dasar CakePHP................................................................8 1.6.1. Instalasi Web Server............................................................................8 1.6.2. Instalasi CakePHP.............................................................................14 BAB 2. Memulai CakePHP............................................................................17 2.1. Menentukan Layout Awal...........................................................................18 2.2. Welcome to CakePHP Framework.............................................................20 2.3. Penanganan HTML.....................................................................................21 2.3.1. Charset...............................................................................................21 2.3.2. CSS....................................................................................................22 2.3.3. Meta...................................................................................................22 2.3.4. docType.............................................................................................22 2.3.5. Style...................................................................................................23 2.3.6. Image.................................................................................................24 2.3.7. Link....................................................................................................24 2.4. Penanganan Form.......................................................................................24 2.4.1. Form Open........................................................................................24 2.4.2. Form Close........................................................................................25 vii 2.4.3. Form Input Text.................................................................................25 2.4.4. Form Input Hidden............................................................................25 2.4.5. Form Input Password........................................................................26 2.4.6. Form Input Upload............................................................................26 2.4.7. Form TextArea..................................................................................27 2.4.8. Form Label........................................................................................27 2.4.9. Form Dropdown................................................................................28 2.4.10. Form Checkbox...............................................................................29 2.4.11. Form Radio......................................................................................30 2.4.12. Form Submit...................................................................................31 2.4.13. Form Button....................................................................................31 2.4.14. Form Reset......................................................................................32 BAB 3. CakePHP dan Database.....................................................................33 3.1. Membangun Database................................................................................34 3.2. Konfigurasi Database..................................................................................35 3.3. Penanganan Database.................................................................................36 3.3.1. Fungsi First........................................................................................37 3.3.2. Fungsi All..........................................................................................38 3.3.3. Fungsi Count.....................................................................................38 3.3.4. Fungsi List.........................................................................................39 3.3.5. Fungsi Neighbors..............................................................................39 3.3.6. Fungsi Threaded................................................................................39 3.4. Menampilkan Record..................................................................................40 3.5. Mengurutkan Record..................................................................................43 3.6. Menampilkan Kolom Secara Spesifik........................................................45 3.7. Menampilkan Record Secara Spesifik.......................................................46 viii BAB 4. Operasi CRUD....................................................................................49 4.1. Model...........................................................................................................50 4.2. Controller.....................................................................................................51 4.3. View.............................................................................................................54 4.3.1. Operasi Create (Menambah Data)....................................................54 4.3.2. Operasi Read (Membaca Data)........................................................55 4.3.3. Operasi Update (Mengubah Data)...................................................59 4.3.4. Operasi Delete (Menghapus Data)...................................................61 BAB 5. Teknik CakePHP................................................................................63 5.1. Teknik Scaffolding......................................................................................64 5.2. Teknik Pagination........................................................................................66 5.3. Teknik Paginator (Sort By).........................................................................69 5.4. Teknik Validation........................................................................................70 5.5. Menu Tree...................................................................................................72 5.6. Menangani Upload File..............................................................................79 5.6. Menghapus File yang Telah di Upload......................................................88 BAB 6. Components.........................................................................................93 6.1. Authentication.............................................................................................94 6.1.1. Membuat Tabel Users.......................................................................94 6.1.2. Membuat Model Users.....................................................................95 6.1.3. Membuat Controller Global.............................................................95 6.1.4. Membuat Controller Users...............................................................97 6.1.5. Membuat Form Login.......................................................................98 6.1.6. Menambah User................................................................................99 6.1.7. Menambah Status Login.................................................................102 ix 6.2. Session.......................................................................................................103 6.2.1. Write and Read Session..................................................................103 6.2.2. Destroy Session...............................................................................104 BAB 7. Proyek Membuat Web Blog............................................................107 7.1. Menentukan Layout..................................................................................108 7.2. Membuat Database dan Tabel..................................................................109 7.3. Konfigurasi Databasae.............................................................................. 111 7.4. Membuat Controller Global (Links)........................................................ 111 7.5. Membuat Halaman Articles untuk User ..................................................112 7.6. Membuat Halaman Comments untuk User..............................................117 7.7. Membuat Halaman Login Admin............................................................122 7.8. Manajemen Articles untuk Admin...........................................................128 7.8.1. Menampilkan Articles untuk Admin..............................................133 7.8.2. Menambah Articles untuk Admin..................................................135 7.8.3. Menampilkan Detail Articles untuk Admin...................................136 7.8.4. Mengedit Articles untuk Admin.....................................................138 7.9. Mempercantik Paging...............................................................................140 7.10. Catatan Akhir CakePHP.........................................................................142 Daftar Pustaka................................................................................................143 x BAB 1 Pengenalan Dasar CakePHP BAB 1 Pengenalan Dasar CakePHP 1.1 Apa Itu CakePHP? CakePHP merupakan sebuah framework PHP yang bersifat open source (gratis). CakePHP merupakan struktur dasar bagi para programmer dalam membuat suatu aplikasi web. Secara umum, tujuan dari adanya CakePHP adalah untuk memungkinkan kita untuk bekerja dalam cara yang terstruktur dan cepat tanpa kehilangan fleksibilitas. Sebagaimana kita ketahui, setiap pembuat program (programmer) memiliki gaya yang berbeda-beda dalam membuat suatu aplikasi web, tak dipungkiri pada tiap baris kode yang dibuat, tidak ada komentar atau dokumentasi yang lengkap yang mengiringinya. Ditambah ada juga programmer yang sengaja meng-enkripsi kode yang dibuat, sehingga pengembangan menjadi sulit dilakukan. Nah, karena kondisi seperti itu, yang menjadi direpotkan adalah orang yang ingin mengembangkan web tersebut (developer). Coba Anda bayangkan jika pengembangan web tersebut telah dilakukan oleh sepuluh developer yang memiliki gaya yang berbeda dalam membuat program, bagaimana dengan developer terakhir yang ingin mengembangkannya?.. maka harus terpaksa juga developer itu mengikuti aturan dari developer sebelumnya. Untuk itu,dengan adanya framework, khususnya CakePHP, diharapkan lebih memudahkan para pembuat ataupun pengembang web. Karena semua gaya penulisan kode telah diseragamkan dan disesuaikan dengan ketentuan framework tersebut, sehingga web dapat lebih mudah dikembangkan. Selain itu, dengan adanya kemampuan RAD (Rapid Application Development), dapat memungkinkan web digunakan dan dikembangkan menjadi aplikasi lain yang lebih kompleks. Dapat dipastikan bahwa pada masa-masa mendatang pembuatan web akan beralih kepada teknik pemograman OOP dan meninggalkan PHP classic. Banyak perusahaan sekarang ini mulai menanggapi masalah tersebut, sehingga banyak perusahaan mengharuskan setiap programmernya menguasai framework, faktanya juga dapat dilihat dalam setiap lowongan kerja yang mencari programmer 2 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P yang menguasai framework (bukan dilihat dari tingkat pendidikan). Di Indonesia, penggunaan framework CakePHP memang belum semarak CodeIgniter (CI). Alasannya, panduan yang tersedia sangat terbatas, sehingga menjadi sulit dipelajari serta kecepatan akses yang tidak secepat CI. Sebenarnya banyak kelebihan-kelebihan yang diperoleh dalam menggunakan CakePHP dibandingkan framework lain, misalnya Cake Bake ataupun penggunaan component yang disediakan oleh CakePHP. Dari pembahasan diatas, dapat disimpulkan bahwa CakePHP framework merupakan suatu struktur kerja yang memiliki fungsi, modul, class dan aturan-aturan dari semua kebutuhan aplikasi web yang memudahkan developer dalam mengembangkan web secara terstruktur dan cepat serta memiliki kelebihan-kelebihan tersendiri dari setiap masing-masing jenis framework yang dipakai. 1.2 Keuntungan dan Kelemahan CakePHP CakePHP merupakan framework terlengkap saat ini untuk mendukung penggunaan dan pengembangan aplikasi web. Karena selain mendukung pengembangan dan pembuatan, CakePHP juga mendukung penggunaan ajax ataupun jQuery. Berikut beberapa keunggulan dari CakePHP framework, diantaranya: 1. Open source (gratis). CakePHP adalah framework yang bersifat open source. ini adalah salah satu syarat berkembangnya sebuah framework yang baik. 2. Mendukung Ajax. CakePHP mendukung penggunaan ajax. Sehingga untuk menggunakannya, kita hanya mengaktifkan, membuat dan menerapkannya saja. 3.Automagic Function. CakePHP juga memiliki fungsi-fungsi yang telah disediakan, seperti validasi input, session, auth, dll. Yang berguna untuk mempercepat coding, Seperti helper untuk form. Membuat form dengan menggunakan helper dari CakePHP, sangat berguna bagi kita yang bekerja dengan banyak form. 4.Mendukung PHP4 dan PHP5. CakePHP memungkinkan dapat dijalankan hampir disemua browser maupun server. B A B 1 . P e n ge n al a n D a s a r C a k ePH P 3 5. Konsep MCV. Dengan konsep MVC (Model, View, Controller), memungkinkan pengerjaan web akan lebih terstruktur dan mudah dikembangkan karena antara logika dan layout telah dipisahkan, sehingga pengerjaan dapat dilakukan secara fokus. 6. Mendukung ORM. CakePHP juga mendukung ORM (Object Relational Model), yang dapat menterjemahkan relational database menjadi kode program. 7.Komunitas pengguna yang besar dan forum yang cukup baik. CakePHP juga memiliki komunitas dan forum yang cukup baik. Anda dapat bergabung dengan komunitasnya di http://www.cakephpforum.net. Selain beberapa keunggulan yang dimiliki oleh CakePHP, juga memiliki beberapa kelemahan, diantaranya: 1. Manual book yang ada tidak selengkap framework lain. Ini merupakan salah satu kelemahan dari CakePHP, dengan tidak lengkapnya buku manual, untuk memahami dan mempelajari CakePHP akan memakan waktu yang lebih lama dibandingkan dengan framework lain, seperti salah satunya CodeIgniter (CI). 2. Terlalu banyak aturan dan kurang fleksibel. Terlalu banyaknya aturan dalam CakePHP menjadi salah satu kelemahan dari framework ini. Maksud dari kurang fleksibel disini yaitu case sensitive. Case sensitive ini adalah cara pengerjaan dalam penamaan file harus benar-benar sama. Seperti contoh nama controller harus sama dengan nama folder untuk view, dan juga nama view harus sama dengan nama action. Namun sebenarnya, case sensitive ini juga dapat menjadi nilai positif dalam mengembangkan. Karena dengan penamaan yang harus sama seperti itu, kita tidak perlu lagi mencari-cari letak file tempat kode dituliskan, jadi kita bisa langsung fokus terhadap file yang ingin dikembangkan. 1.3 Fitur-Fitur CakePHP CakePHP sebagai framework yang memiliki beberapa kelebihan, CakePHP juga memiliki beberapa fitur yang dapat kita nikmati dalam membangun web. Fiturfitur tersebut antara lain: 4 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P • Komunitas yang baik dan ramah • Lisensi yang fleksibel • Kompatibel dengan PHP4 dan PHP5 • CRUD yang teritegrasi untuk interaksi database • Aplikasi scaffolding • Code generation • Component (Authentication, Session) yang memungkinkan kita memproteksi area dengan cepat. • Konsep MVC • Cake bake, yang memungkinkan pengerjaan dilakukan melalui command line, sehingga meminimalisir pengetikkan kode dan pengerjaan akan selesai dalam waktu singkat. • Permintaan dispatcher yang rapih • Mendukung validasi • Template yang cepat dan fleksibel • Sanitasi data • Chacing yang fleksibel • Localization • Bekerja dari direktori situs web, dengan sedikit atau tidak ada konfigurasi Apache yang terlibat. 1.4 Mengenal Konsep MVC MVC merupakan kepanjangan dari Model - View - Controller, yang merupakan alur kerja atau konsep yang digunakan CakePHP. Dengan konsep MVC ini akan menyebabkan halaman web sedikit mengandung kode, karena telah dipisahkan struktur tampilan dan logika. Adapun ilustrasi dari MVC dapat dilihat pada gambar 1.1. B A B 1 . P e n ge n al a n D a s a r C a k ePH P 5 Gambar 1.1 Konsep MVC Keterangan: • Client, merupakan pengguna saat meminta request pada url web browser. • Dispatcher, berfungsi untuk memeriksa url yang diminta serta menangani permintaan yang sesuai dengan controller. • Controller, merupakan pengendali yang menghubungkan antara model dan juga view, karena semua permintaan yang masuk, akan ditangani oleh controller terlebih dahulu. Dalam controller juga memerlukan spesifikasi logika. • Model, merupakan tempat untuk representasi data atau bagian yang berhubungan dengan database. • View, merupakan tempat untuk memberi informasi atau menampilkan data yang diminta pengguna ke dalam tampilan layar. Secara default, hal yang terdapat dalam view merupakan hal yang kelihatan dihalaman web. Ketika kita mempunyai template atau tampilan web , view merupakan tempat untuk itu. Setelah melihat penjelasan diatas, dapat disimpulkan alur kerja dari framework CakePHP sebagai berikut: 1. Client meminta kepada CakePHP melalui url kepada dispatcher. 2. Dispatcher kemudian menerima dan memeriksa hasil request url tersebut kepada per segment kepada controller. 6 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P 3. Controller kemudian memproses hasil request tersebut berdasarkan segment dan diteruskan kepada bagian model. 4. Lalu dari bagian model akan memproses request controller kepada database, kemudian akan memperoleh hasil dan akan dikembalikan kepada controller untuk ditangani selanjutnya sesuai perintah yang ada dalam controller. 5. Bagian view akan memproses data hasil controller sebelum ditampilkan kepada client. 6. Client mendapatkan informasi sesuai request yang diminta. 1.5 Struktur Folder CakePHP Sebelum kita mempelajari framework CakePHP, kita harus mengenal folderfolder yang tersedia dalam CakePHP, adapun folder-folder yang tersedia adalah sebagai berikut: a.Folder app: tempat untuk menyimpan aplikasi yang akan kita bangun atau kembangkan. • Folder config: tempat untuk menyimpan semua file konfigurasi yang ada dalam aplikasi web. • Folder controllers: tempat menyimpan semua file controller. • Folder models: berisi file-file model yang akan berperan sebagai representasi data, baik itu validasi maupun relasi. • Folder plugins: digunakan apabila developer ingin mengembangkan aplikasi kecil sebagai pendukung aplikasi utama. • Folder tmp: digunakan untuk fungsi caching. • Folder vendors: digunakan apabila developer melibatkan aplikasiaplikasi tambahan yang dikembangkan oleh developer lain. • Folder views: untuk mempresentasikan dari aplikasi yang dibuat. Folder ini mempunyai beberapa sub folder yang digunakan untuk halaman statis (pages), halaman dasar aplikasi (layout), dan sebagainya. • Folder webroot: sebagai document root dari aplikasi yang dibuat. b.Folder cake: berisi class-class dan pustaka dasar CakePHP. Ditempat ini fungsi-fungsi CakePHP ditempatkan. B A B 1 . P e n ge n al a n D a s a r C a k ePH P 7 c.Folder vendors: untuk menyimpan file-file tambahan dan aplikasi source lain yang akan digunakan bersama CakePHP. 1.6 Kebutuhan Tools Dasar CakePHP Sebelum memulai pembelajaran tentang CakePHP, ada beberapa tools dasar yang harus dipenuhi, diantaranya: 1. Web Server Dalam membuat aplikasi yang bersifat dinamis, salah satu hal mutlak yang harus dipenuhi adalah Web Server. tanpa web server, semua yang kita lakukan adalah sia-sia. 2. Text Editor Editor ini berfungsi untuk kita menuliskan skrip program yang akan kita buat. Dalam hal ini, penulis menggunakan Crimson Editor sebagai text editor PHP. Anda juga dapat menggunakan editor lain, seperti Notepad, Zend Studio, Macromedia Dreamweaver, maupun yang lainnya sesuai selera anda. File ini telah penulis sertakan dalam CD tutorial yang diletakkan dalam folder installer. 3.CakePHP CakePHP merupakan file utama dalam membangun aplikasi berbasis CakePHP. Anda dapat mendapatkan versi terbarunya melalui situs resminya, yaitu http://www.cakephp.org. 1.6.1 Instalasi Web Server Kali ini kita akan mencoba menginstal web server sebelum terjun ke dalam langkah awal CakePHP. Web server ini akan dijadikan sebagai mesin PHP dalam menjalankan website dinamis. Disini kita akan memakai Xampp Server, berikut langkah-langkahnya: 1.Karena kita akan belajar menggunakan sistem operasi windows, Anda dapat mendownload xampp di http://www.apachefriends.org/en/xamppwindows.html untuk mendapatkan versi terbarunya. Atau untuk memudahkan Anda belajar, penulis telah menyertakan file tersebut didalam CD yang disertakan pada folder installer. 2. Klik 2x file instalasinya, kemudian anda akan diminta menentukan bahasa 8 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P yang akan digunakan pada saat instalasi. Biarkan secara default (English), selanjutnya klik OK. Lihat gambar 1.2. Gambar 1.2 Memilih Bahasa 3. Maka akan ditampilkan jendela Welcome to the Xampp, klik tombol Next. Lihat gambar 1.3. Gambar 1.3 Kotak dialog Welcome B A B 1 . P e n ge n al a n D a s a r C a k ePH P 9 4. Selanjutnya Anda akan diminta untuk menentukan letak folder Xampp. Biarkan dalam keadaan default. Kemudian klik Next. Lihat gambar 1.4. Gambar 1.4 Menentukan folder Instalasi Xampp 5. Menentukan Apache dan MySQL Service sebagai service windows. Berikan tanda cek pada pilihan “Install Apache as service” dan “Install MySQL as service” untuk menjalankan server secara otomatis pada saat kita menjalankan sistem operasi Windows. Lihat gambar 1.5. 6. Proses instalasi, tunggu hingga proses selesai. Xampp akan secara otomatis meng-ekstrak file-file yang diperlukan. Lihat gambar 1.6. 10 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P Gambar 1.5 Apache dan MySQL Service Gambar 1.6 Proses instalasi B A B 1 . P e n ge n al a n D a s a r C a k ePH P 11 7. Apabila proses instalasi selesai, maka akan tampil kotak dialog Complete, klik tombol Finish. Lihat gambar 1.7. Gambar 1.7 Kotak dialog complete (Finish) 8. Selanjutnya, ikuti instruksi pada kotak dialog yang tampil, apabila tampil kotak peringatan dari firewall sistem operasi, pilih Allow access. Lihat gambar 1.8. 9. Apabila proses instalasi berhasil, maka akan tampil Xampp Control Panel, pastikan bahwa Apache dan Mysql dalam keadaan Running. Jika tidak dalam keadaan Running, Anda dapat menjalankannya melalui tombol Start yang berada di sebelah kanannya. Lihat gambar 1.9. 12 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P Gambar 1.8 Kotak peringatan Firewall dari sistem operasi Gambar 1.9 Xampp Control Panel B A B 1 . P e n ge n al a n D a s a r C a k ePH P 13 1.6.2 Instalasi CakePHP Sebelum melakukan penginstalan terhadap CakePHP, kita akan mengaktifkan modul yang bernama mod_rewrite yang terdapat pada server terlebih dahulu. Caranya sebagai berikut: 1. Buka file httpd.conf yang terdapat di direktori C:\xampp\apache\conf\ dengan menggunakan editor Anda (Notepad). 2. Kemudian cari baris: #LoadModule rewrite_module modules/mod_rewrite.so Untuk mempercepat pencarian, gunakan bantuan search pada toolbar atau tekan shortcut CTRL+F, kemudian ketikkan keyword mod_rewrite. 3. Hilangkan tanda #, sehingga menjadi: LoadModule rewrite_module modules/mod_rewrite.so 4.Terakhir, Anda lakukan penyimpanan terhadap perubahan tersebut. Selanjutnya Anda restart server apache, dengan cara klik 2x file xampp_ restart.exe yang berada di direktori C:\xampp\. Setelah mod_rewrite diaktifkan, Anda dapat melakukan penginstalan terhadap CakePHP. Anda dapat mendownload CakePHP melalui alamat situs resminya di http://www.cakephp.org atau Anda dapat menggunakan CakePHP yang penulis gunakan yang terdapat dalam CD di folder Installer/CakePHP. 1. Copy file yang bernama cakephp-cakephp-1.3.4.0-g703344c.zip dan letakkan ke dalam C:\xampp\htdocs\. 2. Lakukan ekstrak pada file zip tersebut, sehingga akan menghasilkan folder cakephp-cakephp-df6ffd4. 3. Selanjutnya untuk memudahkan saat kita melakukan pengaksesan, ubah nama folder tersebut menjadi nama yang mudah dicerna, seperti contoh ubah menjadi cakephp. 4. Buka web browser anda dan panggil alamat http://localhost/cakephp. 5.Apabila instalasi terhadap CakePHP telah berhasil, maka akan tampil halaman seperti pada gambar 1.10. 14 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P Gambar 1.10 Halaman utama CakePHP 6.Perhatikan Notice (1024) pada gambar 1.10, itu berarti kita diminta untuk mengubah value (nilai) yang terdapat pada folder app/config/core.php menjadi apapun sesuai keinginan kita. Buka file core.php yang terdapat dalam app/config/core.php dengan editor Anda (Notepad). Ubah atau tambahkan coding value menjadi apapun, seperti contoh penulis menambahkan kata blog pada value tersebut. Untuk memudahkan pencarian Anda dapat mengetikkan keyword salt pada menu Search > Find (CTRL + F). Skrip core.php 201 202 203 204 205 206 207 208 * A random string used in security hashing methods. */ Configure::write(‘Security.salt’, DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9miblog’); /** * A random numeric string (digits only) used to encrypt/decrypt strings. */ Configure::write(‘Security.cipherSeed’, ‘76859309657453 542496749683645blog’); B A B 1 . P e n ge n al a n D a s a r C a k ePH P 15 Perhatikan pada kode skrip yang bercetak tebal, value telah kita ubah/ tambahkan, selanjutnya buka kembali web browser Anda dan ketikkan kembali url http://localhost/cakephp, pastikan bahwa Notice tersebut telah hilang dari tampilan browser Anda. Lihat gambar 1.11. Gambar 1.11 CakePHP yang telah diubah valuenya 16 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P BAB 2 Memulai CakePHP BAB 2 Memulai CakePHP 2.1 Menentukan Layout Awal Sebelum kita memulai, terdapat beberapa pilihan yang akan ditentukan dalam memilih tampilan layout. Apakah kita akan menggunakan layout default pada CakePHP atau menciptakan layout sendiri. Untuk menggunakan layout default, kita cukup membuat halaman konten saja. Langkahnya sebagai berikut: 1. Buat satu file atau isi konten dengan menggunakan text editor anda dan simpan dengan nama home.ctp ke dalam direktori \app\views\pages. 2. Buka web browser dan ketikkan alamat http://localhost/cakephp,sehingga akan dipastikan tampilannya berubah menjadi seperti pada gambar 2.1. Gambar 2.1 Menggunakan Layout Default 18 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P Anda dapat mengubah CSS (Cascading Style Sheet) pada layout diatas sesuai dengan keinginan anda pada path direktori app\webroot\css, di folder tersebut CSS-nya diletakkan. Selanjutnya, jika Anda ingin menggunakan layout desain hasil buatan sendiri ataupun menggunakan template yang tersedia, berikut langkahnya: 1. Anda buat layout desain atau template yang sudah disediakan dan anda simpan dengan nama default.ctp ke dalam path app\views\layouts. 2. Kemudian Anda letakkan file CSS dari layout tersebut ke dalam app\webroot\ css. 3. Ubah pemanggilan file CSS pada default.ctp, ikuti dengan prosedur pemanggilan sesuai skrip CakePHP. Skrip dapat Anda lihat pada sub-bab Penanganan HTML. 4. Selanjutnya, kembali kepada web browser anda dan cobalah Anda lakukan refresh/reload, maka tampilan akan berubah menjadi layout yang sesuai keinginan kita. Lihat gambar 2.2. Gambar 2.2 Layout yang telah diubah B A B 2 . M em u l a i C a k ePH P 19 Namun disini penulis akan menggunakan layout default CakePHP sebagai bahan belajar. Jika kita telah menciptakan layout dan telah menyimpannya dengan nama default. ctp didalam app\views\layouts\. Tanpa perlu kita menghapus, layout default yang dimiliki CakePHP akan secara otomatis diganti menjadi layout baru anda. Karena disini kedudukan pada folder layout tersebut diatas dari tingkat default CakePHP. Jika pada folder tempat anda menyimpan adalah kosong. Maka secara otomatis juga yang akan ditampilkan kembali menjadi layout default CakePHP. 2.2 Welcome to CakePHP Framework Sebagai langkah pertama, ada dua hal yang perlu kita ketahui. Apakah kita hendak membuat suatu konten statis atau dinamis? Karena didalam CakePHP, penempatan terhadap perbedaan konten itu berbeda. Jika kita ingin membuat suatu file konten statis, anda dapat meletakkannya didalam folder app\views\ pages. Namun sebaliknya, jika kita ingin menciptakan suatu konten dinamis, Anda dapat meletakkannya pada folder app\views\(folder_anda). Sebagai langkah awal, kita akan mencoba membuat file untuk menampilkan teks yang berisi Welcome to CakePHP Framework. Berikut langkahnya: 1. Buka editor anda (Notepad), dan ketikkan skrip berikut: Skrip home.ctp 1 2 3 <?php echo “Welcome to CakePHP Framework“; ?> Setelah itu anda simpan dengan nama home.ctp ke dalam folder app\views\ pages. Perhatikan format nama penyimpanan. Setiap nama penyimpanan didalam folder views, penamaan harus berformat ctp (bukan php). Karena ctp merupakan format PHP dasar yang terdapat dalam CakePHP. 2. Sekarang coba buka web browser Anda, dan ketikkan url http://localhost/ cakephp. sehingga nanti akan tampil teks Welcome pada browser Anda. Lihat gambar 2.3. 20 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P Gambar 2.3 Welcome to CakePHP Framework 2.3 Penanganan HTML Penanganan kode HTML, meliputi perintah-perintah dasar yang terdapat dalam kode HTML, seperti charset, css, meta, docType, style, dan sebagainya. Berikut adalah contoh-contoh penggunaan kode HTML dalam CakePHP: 2.3.1 Charset Digunakan untuk membuat meta tag yang menentukan karakter dokumen. Default dari charset adalah UTF-8. Berikut contoh penggunaan Charset: echo $html->charset(); Maka akan menghasilkan kode html: <meta http-equiv=“Content-Type” content=”text/ html;charset=utf-8” /> B A B 2 . M em u l a i C a k ePH P 21 2.3.2 CSS Digunakan untuk memanggil file css ke dalam suatu kerja CakePHP Framework. Berikut contoh penggunaan CSS: echo $html->css(‘style’); Maka akan menghasilkan kode html: <link rel=”stylesheet” type=”text/css” href=”/css/style.css”/> Atau jika ingin memanggil lebih dari satu file css, anda dapat menggunakan skrip berikut agar lebih praktis: echo $html->css(array(‘style’,’tables’,’menu’)); Maka akan menghasilkan kode html: <link rel=”stylesheet” type=”text/css” href=”/css/style.css” /> <link rel=”stylesheet” type=”text/css” href=”/css/tables.css” /> <link rel=”stylesheet” type=”text/css” href=”/css/menu.css” /> 2.3.3 Meta Digunakan untuk menghubungkan ke sumber daya eksternal seperti RSS ataupun favicon. Berikut contoh penggunaan meta: echo $html->meta(‘Comments’,’/comments/index.rss’, array(‘type’ => ‘rss’)); Maka akan menghasilkan kode html: <link rel=”http://example.com/comments/index.rss” title=”Comments” type=”application/rss+xml” rel=”alternate” /> 2.3.4 docType Menghasilkan (x) HTML docType tag. Berikut adalah daftar type dari penggunaan docType: 22 Type Nilai Terjemahan Html Text/html Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P html4-strict HTML4 Strict html4-trans HTML4 Transitional html4-frame HTML4 Frameset xhtml-strict XHTML1 Strict xhtml-trans XHTML1 Transitional xhtml-frame XHTML1 Frameset xhtml11 XHTML 1.1. Dan berikut contoh penggunaan docType: echo $html->docType(); echo $html->docType(‘html4-trans’); Maka akan menghasilkan kode html: <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”> <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> 2.3.5 Style Penggunaan style ini dilakukan apabila kita ingin membangun css dalam suatu file PHP dalam CakePHP. Berikut contoh penggunaan fungsi style: echo $html->style(array( ‘background’ => ‘#633’, ‘border-bottom’ => ‘1px solid #000’, ‘padding’ => ‘10px’ )); Maka akan menghasilkan kode html: background: #633; border-bottom: 1px solid #000; padding: 10px; B A B 2 . M em u l a i C a k ePH P 23 2.3.6 Image Digunakan untuk menampilkan gambar pada suatu halaman web. Berikut adalah contoh penggunaan image: echo $html->image(‘cake_logo.png’, array(‘alt’ => ‘CakePHP’)); Maka akan menghasilkan kode html sebagai berikut: <img src=”/img/cake_logo.png” alt=”CakePHP” /> 2.3.7 Link Digunakan untuk menciptakan link html baru. Berikut contoh penggunaan link: echo $html->link(‘Enter’, ‘/pages/home’, array(‘class’ => ‘button’, ‘target’ => ‘_blank’)); Maka akan menghasilkan kode html sebagai berikut: <a href=”/pages/home” class=”button” target=”_blank”> Enter</a> 2.4 Penanganan Form Dalam penanganan form, seperti tombol submit, form, textarea, textbox, radio, checkbox, dropdown, dan sebagainya. CakePHP framework jugamenyediakan fasilitas-fasilitas yang dapat menyederhanakan pembuatan dan pengaturan form tersebut. berikut adalah penyederhanaan yang tersedia dalam CakePHP untuk menangani penanganan kode form HTML: 2.4.1 Form Open Form open ini digunakan apabila kita ingin mengirimkan suatu variabel dalam web untuk diproses. Berikut adalah skrip untuk memulai bentuk form: echo $form->create(‘post’); Maka akan menghasilkan kode html: <form id=”PostAddForm” method=”post” action=”/cakephp/posts/ add” accept-charset=”utf-8”> 24 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P Seperti yang kita ketahui, bahwa elemen method form mempunyai dua variabel, yaitu post dan get. Jika penulisan yang diatas adalah metode post, maka dibawah ini merupakan form dengan method “get”. echo $form->create(‘post’,array(‘type’ => ‘get’)); 2.4.2 Form Close Form close berfungsi untuk mengakhiri suatu form. Berikut merupakan contoh penggunaan penutupan terhadap suatu form: echo $form->end(‘Finish’); Maka akan menghasilkan kode html: <input type=”submit” value=”Finish”> 2.4.3 Form Input Text Form input text berfungsi untuk menyimpan atau tempat untuk mengisi data sebelum kita mempostkan ke dalam database. Berikut adalah contoh dari penggunaan form input text: echo $form->input(‘name’); Maka akan menghasilkan kode html: <input name=”data[Post][name]” type=”text” maxlength=”100” id=”PostName” /> 2.4.4 Form Input Hidden Form input hidden dapat digunakan apabila kita ingin membuat input field yang tidak kelihatan atau tidak akan ditampilkan (hidden) pada jendela web browser, namun terdapat value yang terdapat didalamnya. Berikut adalah contoh dari penggunaan form input hidden: echo $form->hidden(‘name’); Maka akan menghasilkan kode html: <input type=”hidden” name=”data[Post][name]” id=”PostName” /> Anda juga dapat menggunakan pengaturan lain yang tersedia, misalnya: B A B 2 . M em u l a i C a k ePH P 25 echo $form->hidden(‘name’, array( ‘size’ => ‘20’, ‘value’ => ‘name’, ‘maxlength’ => ‘100’ )); Maka akan menghasilkan kode html: <input type=”hidden” name=”data[Post][name]” size=”20” value=”name” maxlength=”100” id=”PostName” /> 2.4.5 Form Input Password Dalam penggunaan form input untuk penginputan password sangat berguna bahkan sangat penting dalam menjaga kerahasiaan identitas seoserang. Sehingga dengan adanya form input password, setiap inputan yang diketik dalam kotak inputan akan disamarkan dalam bentuk bintang (*) ataupun bullet. Sama seperti skrip input sebelumnya, berikut adalah contoh dalam penggunaan fom input password dalam CakePHP: echo $form->password(‘password’); Maka akan menghasilkan kode html: <input type=”password” name=”data[Post][password]” id=”PostPassword” /> Kita juga dapat membuat pengaturan dari skrip input password diatas. Berikut adalah contoh dalam pengaturan pembuatan form input password: echo $form->password(‘password’, array( ‘size’ => ‘20’, ‘value’ => ‘123456’, ‘maxlength’ => ‘100’ )); Maka akan menghasilkan kode html: <input type=”password” name=”data[Post][password]” size=”20” value=”123456” maxlength=”100” id=”PostPassword” /> 2.4.6 Form Input Upload Penggunaan input upload sangat berguna dalam pembuatan pembangunan website, yang berfungsi sebagai sarana untuk menginputkan suatu file atau data selain daripada text, seperti gambar, video, aplikasi, maupun software-software 26 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P lain. Berikut adalah contoh penggunaan form input upload: echo $form->file(‘file’); Maka akan menghasilkan kode html: <input type=”file” name=”data[Post][file]” id=”PostFile” /> 2.4.7 Form Textarea Textarea digunakan untuk inputan text dengan jumlah karakter tidak terbatas. Biasanya form textarea digunakan apabila kita ingin menginputkan berita, artikel, acara, ataupun hal-hal yang memakan jumlah karakter banyak. Berikut adalah contoh pembuatan textarea: echo $form->textarea(‘alamat’); Maka akan menghasilkan kode html: <textarea name=”data[Post][alamat]” id=”PostAlamat” /> Kita juga dapat mengatur baris dan kolom (lebar dan tinggi) dari form textarea, berikut adalah contoh dalam mengatur lebar dan tinggi dari textarea: echo $form->textarea(‘alamat’, array( ‘cols’ => ‘30’, ‘rows’ => ‘6’ )); Maka akan menghasilkan kode html: <textarea name=”data[Post][alamat]” cols=”30” rows=”6” id=”PostAlamat” /> 2.4.8 Form Label Berikut adalah contoh penggunaan form label: echo $form->label(‘status’); Maka akan menghasilkan kode html: <label for=”UserStatus”>Status</label> B A B 2 . M em u l a i C a k ePH P 27 2.4.9 Form Dropdown Form dropdown digunakan apabila kita ingin menentukan pilihan dari beberapa pilihan. Seperti contoh kita memilih kota tempat tinggal kita. Dropdown ditandai dengan bentuk kotak seperti textbox dan juga terdapat tanda panah ke bawah pada textbox tersebut. Berikut adalah format skrip kode dalam penggunaan form dropdown: echo $form->select(‘namafield’, $options, ‘0’); Dari format tersebut dapat dicontohkan dalam penggunaannya sebagai berikut: 1 2 3 4 5 6 7 8 9 10 11 12 <?php // deklarasikan pilihan melalui fungsi array $options '0' => ‘a’ => ‘b’ => ‘c’ => ‘d’ => ?> = array( 'Pilih Kota', ‘Jakarta’, ‘Bandung’, ‘Cirebon’, ‘Surabaya’); echo $form->select(‘kota’, $options, ‘0’); Maka akan menghasilkan kode html: 1 2 3 4 5 6 7 8 <select name=”data[Post][kota]” id=”PostKota”> <option value=””></option> <option value="0" selected="selected">Pilih Kota</option> <option value=”a”>Jakarta</option> <option value=”b”>Bandung</option> <option value=”c”>Cirebon</option> <option value=”d”>Surabaya</option> </select> Atau untuk lebih praktis, Anda dapat menggunakan cara alternatif berikut: echo $form->select(‘kota’, array(‘options’ => array(‘Jakarta’, ‘Bandung’,’Cirebon’,’Surabaya’))); Maka akan menghasil kode html yang sama seperti skrip sebelumnya. Contoh hasil pembuatan dropdown dilihat pada gambar 2.4. 28 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P Gambar 2.4 Tampilan Dropdown 2.4.10 Form Checkbox Fungsi checkbox digunakan apabila kita ingin memilih lebih dari satu option yang tersedia. Seperti contoh kita dihadapkan dalam memilih hobi yang ditampilkan dalam halaman web. Berikut adalah contoh dari penggunaan form checkbox: echo $form->input(‘hobi’, array( ‘type’ => ‘select’, ‘multiple’ => ‘checkbox’, ‘options’ => array( ‘value 1’ => ‘Label 1’, ‘value 2’ => ‘Label 2’) )); Maka akan menghasilkan kode html: <div class=”checkbox”> <input type=”checkbox” name=”data[hobi][]” value=”Value 1” id=”HobiValue1” /> <label for=”HobiValue1”> Label 1 </label> </div> <div class=”checkbox”> <input type=”checkbox” name=”data[hobi][]” value=”Value 2” id=”HobiValue2” /> <label for=”HobiValue2”>Label 2</label> </div> B A B 2 . M em u l a i C a k ePH P 29 Contoh hasil pembuatan checkbox dilihat pada gambar 2.5. Gambar 2.5 Tampilan Checkbox 2.4.11 Form Radio Form radio biasanya digunakan dalam menentukan salah satu dari pilihan yang tersedia dalam halaman web. Seperti contoh ketika kita memilih salah satu jenis kelamin dalam sautu web pendaftaran. Dibawah ini adalah contoh susunan penggunaan form radio: echo $form->radio(‘$fieldname’, $options , $attribut); Berikut adalah contoh penggunaan penerapan form radio. Dalam hal ini, penulis akan mengambil contoh pembuatan dalam pemilihan antar dua pilihan mengenai jenis kelamin. 1 2 3 4 5 6 7 8 9 10 <?php // uraikan option dalam bentuk array $jk = array(‘L’ => ‘Laki-laki’, ‘P’ => ‘Perempuan’); // ubah Legend pada Radio menjadi false $attribut = array (‘legend’ => false); // cetak array dalam bentuk fungsi radio echo $form->radio (‘jk’, $jk, $attribut); ?> Maka akan menghasilkan kode html: <input type=”radio” name=”data[Post][jk]” id=”PostJkL” value=”L”>Laki-laki <input type=”radio” name=”data[Post][jk]” id=”PostJkP” value=”P”>Perempuan Contoh hasil pembuatan form radio dilihat pada gambar 2.6. 30 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P Gambar 2.6 Tampilan Radio 2.4.12 Form Submit Secara default penggunaan pada pembuatan tombol submit sebagai berikut: echo $form->submit(); Dari penulisan skrip diatas, akan menghasilkan kode html sebagai berikut: <div class=”submit”><input type=”submit” value=”Submit”></div> Dalam menggunakan tombol submit, kita juga dapat mengganti tombol tersebut dengan gambar. Berikut contoh penggunaannya: echo $form->submit(‘ok.png’); Maka akan menghasilkan kode html: <input type=”image” src=”/img/ok.png”> 2.4.13 Form Button Form button digunakan untuk membuat tombol standar. Berikut adalah contoh dari penggunaan form button: echo $form->button(‘Simpan’); Maka akan menghasilkan kode html sebagai berikut: <button type=”submit”>Simpan</button> Agar penulisan tombol button lebih kompleks, anda dapat menambahkan komponen-komponen button, berikut contohnya: echo $form->button(‘Simpan’, array( ‘id’ => ‘button’, ‘value’ => ‘true’, ‘name’ => ‘button’, ‘type’ => ‘reset’, ‘content’ => ‘reset’ )); B A B 2 . M em u l a i C a k ePH P 31 Maka akan menghasilkan kode html: <button type=”reset” id=”button” value=”true” name=”button” content=”reset”>Simpan</button> 2.4.14 Form Reset Form reset berfungsi untuk membatalkan atau mengulang penginputan dari awal, sehingga penginputan yang telah terisi akan terhapus secara otomatis dan mengembalikannya ke awal penginputan. Form reset biasanya dipakai bersebelahan dengan form submit pada proses input. Berikut adalah contoh penggunaan form reset dalam CakePHP: echo $form->submit(‘reset’, array(‘type’ => ‘reset’)); Maka akan menghasilkan kode html: <input type=”reset” value=”reset” /> 32 Te kni k Ce pat Memban g u n A p likas i W e b de n gan Fr a m ew or k C a k ePH P