Tutorial Codeigniter #1: Pengenalan Codeigniter Untuk Pemula

  • Uploaded by: Maya Nasution
  • 0
  • 0
  • January 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Tutorial Codeigniter #1: Pengenalan Codeigniter Untuk Pemula as PDF for free.

More details

  • Words: 8,555
  • Pages: 53
Loading documents preview...
Tutorial Codeigniter #1: Pengenalan Codeigniter untuk Pemula PHP memiliki banyak framework, saking banyaknya kadang kita dibuat galau untuk memilih framework. Milih framework saja masih bingung… …apalagi milih jodoh . Serius! Banyak yang masih galau memilih framework. Bahkan menghabiskan waktunya untuk mencari perbandingan antar framework. Daripada mebanding-bandingkan, sebaiknya kita mulai belajar salah satu framework. Agar nanti kita bisa menyimpulkan sendiri, mana framework yang disukai dan cocok untuk kita gunakan. Kalau tidak cocok… ya tinggal cari dan pelajari framework yang lain. Sia-sia donk, sudah susah belajar tapi tidak cocok. Menurut saya: Tidak ada yang namanya sia-sia dalam belajar. Karena kita akan mendapatkan ilmu dan pengalaman. Kalaupun ilmunya belum bisa diamalkan, setidaknya kita bisa mengajari orang lain. Oke, lanjut… Ngomong-ngomong, apa itu framework? Framework dalam bahasa indonesia artinya kerangka kerja. Kerangka kerja untuk membuat sesuatu (web). Perumpamaannya mungkin bisa seperti itu. Dengan menggunakan framework, pembuatan web akan lebih cepat dibandingkan PHP Native. Karena kita tidak perlu membuat semuanya dari nol. Framework sudah menyediakan fungsi, library, dan peralatan lainnya yang kita butuhkan. Salah satu framework yang cukup populer di Indonesia adalah Codeigniter.

Apa itu Codeigniter? Codeigniter merupakan sebuah framework PHP yang menggunakan pola desain (design pattern) MVC (Model View Controller)1. CodeIgniter dirilis pertama kali pada 28 Februari 2006. Versi stabil terakhir—saat tulisan ini dibuat—adalah versi 3.1.9. Website Codeigniter Sedangkan Codeigniter 4 masih dalam tahap pengembangan. CI 4 adalah generasi penerus dari CI 3 yang konsepnya lebih modern 2. Codeigniter cocok digunakan untuk membuat aplikasi web seperti:  Portal Berita;  Sistem Informasi;  Web Startup;  Profile Company;  eComerce;  Blog;  dan sebagainya. Kelebihan Codeigniter Ada beberapa kelebihan CodeIgniter (CI) dibandingkan dengan Framework PHP lain, 3  Performa cepat: Codeigniter merupakan framework yang paling cepat dibanding framework yang lain. Karena tidak menggunakan template engine dan ORM yang dapat memperlambat proses.



  

Konfigurasi yang minim (nearly zero configuration): tentu saja untuk menyesuaikan dengan database dan keleluasaan routing tetap diizinkan melakukan konfigurasi dengan mengubah beberapa file konfigurasi seperti database.php atau autoload.php, namun untuk menggunakan codeigniter dengan setting standard, anda hanya perlu mengubah sedikit saja pada file di folder config. Memiliki banyak komunitas: Komunitas CI di indonesia cukup ramai, tutorialnya pun mudah dicari. Dokumentasi yang lengkap: Codeigniter disertai dengan user_guideyang berisi dokumentasi yang lengkap. Mudah dipelajari pemula: Bagi pemula, CI sangat mudah dipelajari. Karena CI tidak terlalu bergantung pada tool tambahan seperti composer, ORM, Template Engine, dll.

Contoh Website yang dikembangkan dengan Codeigniter Salah satu website indonesia yang masih menggunakan adalah projects.co.id.

Membuat Project Codeigniter Langkah-langkah yang harus dilakukan untuk membuat project CI: 1. Download Codeigniter; 2. Ekstrak CI ke htdocs. Silahkan buka website Codeigniter untuk mendownload.

CI

hingga

saat

ini

Kita akan mendapatkan sebuah file zip CodeIgniter-3.1.9.zip, ekstrak file tersebut ke dalam c:\xampp\htdocs (XAMPP) atau /var/www/html (di Linux). Setelah itu, ubah nama CodeIgniter-3.1.9 menjadi tokobuah. Kenapa namanya tokobuah? Karena pada project ini, kita akan membuat sebuah website yang menjual buah. Sekarang coba buka: http://localhost/tokobuah/

Selamat Codeigniter sudah berhasil diinstal. Selanjutnya, silahkan buka dengan teks editor. Lalu coba untuk mengenali struktur direktorinya. Saya membukanya dengan teks editor VS Code:

Mengenal Struktur Direktori Codeigniter Ini adalah struktur direktori Codeigniter:

Tedapat dua direktori penting di dalam CI: application dan system. Selain itu terdapat juga direktori user_guide dan beberapa file. Berikut ini penjelasannya: 1. application berisi semua kode aplikasi. Di dalam direktori inilah kita akan menulis semua kode aplikasi kita.

2. system berisi kode-kode inti dari Codeiniter. Jangan mengubah apapun di dalam direktori ini. Jika kita ingin upgrade versi, kita cukup me-replace direktori ini dengan yang baru. 3. tests berisi kode untuk melakukan unit testing. 4. user_guide berisi dokumentasi codeigniter. Kita bisa menghapus direktori ini saat web sudah jadi. 5. .editor_config berisi konfigurasi untuk teks editor. 6. .gitignore berisi daftar file dan folder yang akan diabaikan oleh Git. 7. comspoer.json adalah file yang berisi keterangan project dan keterangan library yang digunakan. File ini dibutuhkan oleh composer. 8. contributing.md adalah file yang berisi penjelasan cara berkontribusi di proyek CI. Kita bisa menghapus file ini, apabila web sudah jadi. 9. license.txt adalah file yang berisi keterangan lisensi dari CI. 10. readme.rst sama seperti file contributing.md file ini berisi penjelasan dan informasi tentang project CI. Kita juga bisa menghapus file ini saat web sudah selesai. 11. index.php adalah file utama dari CI. File yang akan dibuka pertamakali saat kita mengakses web. Selanjutnya silahkan buka direktori application dan perhatikan direktori yang ada di sana.  cache berisi cache dari aplikasi.  config berisi konfigurasi aplikasi. o autoload.php tempat kita mendefinisikan autoload; o config.php konfigurasi aplikasi; o constants.php berisi konstanta; o database.php konfigurasi database aplikasi; o doctypes.php berisi definisi untuk doctype HTML; o foreign_chars.php berisi karakter dan simbol; o hooks.php berisi konfigurasi hooks; o index.html untuk mencegah direct access; o memcached.php untuk berisi konfigurasi untuk memcached; o migration.php konfigurasi untuk migrasi; o mimes.php berisi definisi tipe file; o profiler.php konfigurasi untuk profiler; o routers.php tempat kita menulis route aplikasi; o smileys.php berisi kode untuk emoji; o user_agents.php berisi definisi untuk user agents.  controller berisi kode untuk controller.  core berisi kode untuk custom core.  helpers berisi fungsi-fungsi helper.  hooks berisi kode untuk script hook.  language berisi string untuk bahasa, apabila web mendukung multibahasa.  libraries berisi library.  logs berisi logs dari aplikasi.  models berisi kode untuk model.  thrid_party berisi library dari pihak ketiga.  views berisi kode untuk view.  index.html file html untuk mencegah direct access.

Selamat datang di Codeigniter Ketika membuka http://localhost/tokobuah/, kita akan mendapatkan tampilan Welcome to Codeigniter. Ini adalah tampilan awal yang akan kita lihat saat baru pertama instal CI.

Sebagai pemanasan, cobalah untuk mengubah teks Welcome to CodeIgniter!menjadi Selamat datang di Toko Buah Petanikode. Caranya: Buka file application/views/welcome_message.php . Lalu ubah teks pada baris 71.

…dan sekarang coba reload kembali halaman http://localhost/tokobuah/.

Selamat Ini adalah perubahan pertama yang kamu buat. Penjelasan: File welcome_message.php yang berada di dalam direktori viewsmerupakan file yang bertanggung jawab untuk menampilkan sesuatu. Di sini kita bisa menuliskan kode untuk template dan CSS. File welcome_message.php di-load oleh sebuah controller application/controllers/welcome.php dengan kode: public function index() { $this->load->view('welcome_message'); }

Controller welcome adalah controller default yang digunakan. Hal ini bisa kita lihat pada konfigurasi routers di application/config/routers.php.

Tutorial Codeigniter #2: MVC dan Routing, Konsep dasar CI yang Harus Kamu Pahami Pada tutorial sebelumnya, kita sudah belajar cara menginstal CI dan mengenal struktur direktori dari CI. Sekarang kita lanjut belajar tentang routing dan MVC. Rencananya, kita akan membuat aplikasi online shop (olshop). Namun, sebelum kita mulai membuat aplikasi dengan CI, ada baiknya berkenalan dulu dengan kosep dasar CI. Codeigniter adalah frameowrk yang menggunakan konsep MVC. Apa itu MVC? Mari kita bahas… Mengenal Konsep MVC pada Codeigniter

MVC (Model, View, Controller) adalah sebuah pola desain (design pattern)arsitektur pengembangan aplikasi yang memisahkan dan mengelompokan beberapa kode sesuai degan fungsinya.1 MVC membagi aplikasi ke dalam tiga bagian fungsional: model, view, dan controller.  Model adalah kode-kode untuk model bisnis dan data. biasanya berhubungan langsung dengan database untuk memanipulasi data (insert, update, delete, search), menangani validasi dari bagian controller, namun tidak dapat berhubungan langsung dengan bagian view.  View merupakan bagian yang menangani presentation logic. berisi kode-kode untuk tampilan.  Controller merupakan bagian yang mengatur hubungan antara bagian model dan bagian view, controller berfungsi untuk menerima request dan data dari user kemudian menentukan apa yang akan diproses oleh aplikasi.

Alur kerjanya seperti ini:2 1. Mulai; 2. User mengirim request ke web; 3. File yang pertama kali dieksekusi adalah index.php; 4. Lalu dari index.php, request akan diteruskan oleh routers.php; 5. routers.php akan mencari cache di server, apabila tedapat cache maka cache itu yang akan dikirim sebagai balasan (response). Apabila tidak ada cache barulah request diteruskan ke Controller; 6. Controller akan bertanggunag jawab untuk mengambil data dari Modeldan merendernya ke dalam View dengan menggunakan library, plugin, dan helper yang ada. 7. Hasil render (view) dikirim ke pengguna dan disimpan dalam cache, apabila fitur cache aktif; 8. Selesai.

Memahami Router pada Codeigniter Router pada Codeigniter bertugas untuk menentukan controller dan method/fungsi yang akan dieksekusi. Ketika kita membuka, http://localhost/tokobuah/ maka fungsi yang akan dieksekusi adalah fungsi index() yang berada di dalam controller welcome. class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }

Kenapa bisa begitu? Ini karena konfigurasi router defaultnya adalah controller welcome. Coba saja buka pada file config/routers.php.

Fungsi index() adalah fungsi yang akan dieksekusi saat kita mengaksescontroller welcome. Sekarang coba buka: http://localhost/tokobuah/index.php/welcome/index, maka kita akan mendapatkan hal yang sama seperti membuka http://localhost/tokobuah/.

Membuat Beberapa Router Sebagai latihan, coba tambahkan dalam Controller Welcome dengan method ini:

route /about/ dan /contact/ di

public function about() { // fungsi untuk me-load view about.php $this->load->view('about'); } public function contact() { // fungsi untuk me-load view contact.php $this->load->view('contact'); }

Tambahkan di bawah method index().

Setelah itu tambahkan dua buah file view di dalam direktori views dengan isi sebagai berikut. views/about.php

About Us

Ini adalah halaman about

views/contact.php

Contact Us

Ini adalah halaman Contact



Route sudah kita tambahkan. Sekarang coba buka:  http://localhost/tokobuah/index.php/welcome/about/  dan http://localhost/tokobuah/index.php/welcome/contact/ Hasilnya:

Apabila kita membuka http://localhost/tokobuah/index.php/contact, terjadi error 404 not found.

maka

Kenapa bisa begitu? Ini karena route yang baru saja kita buat, belum didaftarkan ke dalam routers.php. Sekarang buka file config/routers.php, lalu tambahkan kode berikut. $route['about'] = 'welcome/about'; $route['contact'] = 'welcome/contact';

Tambahkan di bawah kode route yang sudah ada.

akan

Hasilnya:

Apakah kita harus menambahkan route pada routers.php di setiap pembuatan route baru? Jawabannya: Tidak harus, karena CI juga mampu mendeteksi otomatis route berdasarkan nama controller dan method yang dibuat.3

Ini formatnya: http://example.com/[controller-class]/[controller-method]/[arguments]

Penambahan route pada routers.php dibutuhkan saat kita ingin membuat kustom route untuk controller tertentu. Apa Selanjutnya? Kita sudah belajar tentang MVC dan Route. Ini memang masih dasar. Selanjutnya nanti kita akan banyak menggunakannya.

Tutorial Codeigniter #3: Cara Menggunakan Bootstrap pada Codeigniter Bootstrap merupakan CSS framework yang populer dalam pengembangan web. Bahkan template Petanikode juga dibuat dengan Bootstrap. Pada tutorial ini, kita tidak akan membahas bootstrap secara detail. Karena saya sudah membuat tutorial bootstrap di artikel yang berbeda. Apabila kamu belum paham bootstrap… …tenang, ikuti saja tutorial ini sambil belajar. Nanti juga paham sendiri, hehehe. Lanjut… Rencananya pada aplikasi yang akan kita buat, kita akan menggunakan template SB Admin. Kenapa SB Admin? Karena sederhana, gartis, menggunkan Bootstrap 4, dan mudah diimplementasikan pada Codeigniter.

Tampilan Template SB Admin

Langkah-langkah yang harus dilakukan untuk menggunakan bootstrap (template SB Admin) pada Codeigniter: 1. 2. 3. 4. 5. 6. 7. 8.

Konfigurasi Codeigniter; Download SB Admin; Ekstrak SB Admin; Copy file assets yang dibutuhkan; Membuat Template; Membuat partial template; Menggunakan partial pada template; Selesai…

Kedengarannya mdudah, namun dalam prakteknya, kita akan mendapatkan banyak kendala dan masalah. Karena itu, pastikan kamu mengikuti tutorial ini dengan seksama. 1. Konfigurasi Awal Codeigniter Sebelum memulai membuat template, silahkan lakukan konfigurasi terlebih dahulu… Konfigurasi Base URL

Base URL berfungsi untuk menentukan alamat atau URL yang akan digunakan oleh web. Saat mengembangkan web, kita akan menggunakan Base URL berikut: http://localhost/tokobuah

Ini adalah alamat yang bisa kita akses dari localhost. Saat web sudah jadi, nanti ubah alamat tersebut ke alamat domain.

Misal: https://www.petanikode.com

Cara mengatur Base URL, silahkan buka file config/config.php. Lalu isi bagian $config['base_url'] = ''; menjadi seperti ini:

Konfigurasi Autoload

Berikutnya kita harus meload sebuah helper ke memori secara otomatis melalui autoload.php. Helper adalah fungsi-fungsi Codeigniter yang akan membantu kita dalam berbagai hal, seperti: membuat form, mengakses URL, dll. Salah satu helper yang kita butuhkan dalam pembuatan template adalah helper url. Helper url berisi fungsi-fungsi untuk mengakses URL seperti base_url(), site_url(), $this->uri, dll. Cara mengaktifkan helper url: Pertama buka file config/autoload.php, lalu cari $autoload['helper']. Tambahkan url, sehingga menjadi seperti ini:

Membuat Konstanta

Setelah itu, buat konstanta SITE_NAME untuk menyimpan nama web. Konstanta ini nanti kita perlukan untuk mengambil judul web pada template. Bila kamu belum paham tentang konstanta di PHP, silahkan baca: Apa itu Konstanta? Lanjut… Silahkan buka file config/constants.php, lalu tambahkan kode berikut… /* |-------------------------------------------------------------------------| Constants for Site |-------------------------------------------------------------------------| */ define('SITE_NAME', 'Tokobuah');

…di bagian akhir:

2. Download dan Ekstrak SB Admin Silahkan download SB Admin dari websitenya.

Setelah itu, kita akan mendapatkan sebuah file ZIP. Ekstrak file tersebut sehingga kita punya file SB admin seperti ini:

Ini adalah file template yang akan kita gunakan pada proyek Codeigniter. 3. Menambahkan SB Admin di Codeigniter Tugas kita berikutnya adalah menambahkan file SB Admin ke dalam proyek Codeigniter. Caranya: Kita tinggal copy/paste file dan folder yang dibutuhkan. Berikut ini folder yang harus kita copy: 1. Folder css

2. Folder js 3. Folder vendor –rename menjadi–> assets Untuk folder vendor, kita akan ubah namanya menjadi assets agar tidak bercampur dengan folder vendor dari composer. Folder vendor berisi library front-end dari pihak ketiga, seperti: Bootstrap, Font awesome untuk ikon, chart.js, datatables, dan jquery. Folder sass dapat juga kita copy apabila kita ingin memodifikasi dan menggunakan sass pada project. Namun, karena kita hanya akan memakai saja. Kita cukup copy tiga folder yang tadi.

Setelah itu, kita bisa mulai membuat template untuk tampilan admin. 4. Membuat dan Modifikasi Template Buat sebuah direktori baru di dalam direktori views dengan nama admin. Lalu di dalamnya berisi kode php dengan nama overview.php.

File overview.php akan menjadi template untuk halaman home admin. Isi dari file overview.php akan kita ambil dari file index.html SB Admin. Silahkan buka kembali template SB Admin, ambil semua kode yang ada di dalam file index.html lalu copy ke overview.php. Sehingga file overview.php akan terisi seperti ini: <meta <meta <meta <meta <meta

charset="utf-8"> http-equiv="X-UA-Compatible" content="IE=edge"> name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> name="description" content=""> name="author" content="">

SB Admin - Dashboard
Area Chart Example
Data Table Example














Name Position Office Age Start date Salary
Name Position Office Age Start date Salary
Tiger Nixon System Architect Edinburgh 61 2011/04/25 $320,800
Garrett Winters Accountant Tokyo 63 2011/07/25 $170,750
Ashton Cox Junior Technical Author San Francisco 66 2009/01/12 $86,000
Cedric Kelly Senior Javascript Developer Edinburgh 22 2012/03/29 $433,060
Airi Satou Accountant Tokyo 33 2008/11/28 $162,700
Brielle Williamson Integration Specialist New York 61 2012/12/02 $372,000
Herrod Chandler Sales Assistant San Francisco 59 2012/08/06 $137,500
Rhona Davidson Integration Specialist Tokyo 55 2010/10/14 $327,900
Colleen Hurst Javascript Developer San Francisco 39 2009/09/15 $205,500
Sonya Frost Software Engineer Edinburgh 23 2008/12/13 $103,600
Jena Gaines Office Manager London 30 2008/12/19 $90,560
Quinn Flynn Support Lead Edinburgh 22 2013/03/03 $342,000
Charde Marshall Regional Director San Francisco 36 2008/10/16 $470,600
Haley Kennedy Senior Marketing Designer London 43 2012/12/18 $313,500
Tatyana Fitzpatrick Regional Director London 19 2010/03/17 $385,750
Michael Silva Marketing Designer London 66 2012/11/27 $198,500
Paul Byrd Chief Financial Officer (CFO) New York 64 2010/06/09 $725,000
Gloria Little Systems Administrator New York 59 2009/04/10 $237,500
Bradley Greer Software Engineer London 41 2012/10/13 $132,000
Dai Rios Personnel Lead Edinburgh 35 2012/09/26 $217,500
Jenette Caldwell Development Lead New York 30 2011/09/03 $345,000
Yuri Berry Chief Marketing Officer (CMO) New York 40 2009/06/25 $675,000
Caesar Vance Pre-Sales Support New York 21 2011/12/12 $106,450
Doris Wilder Sales Assistant Sidney 23 2010/09/20 $85,600
Angelica Ramos Chief Executive Officer (CEO) London 47 2009/10/09 $1,200,000
Gavin Joyce Developer Edinburgh 42 2010/12/22 $92,575
Jennifer Chang Regional Director Singapore 28 2010/11/14 $357,650
Brenden Wagner Software Engineer San Francisco 28 2011/06/07 $206,850
Fiona Green Chief Operating Officer (COO) San Francisco 48 2010/03/11 $850,000
Shou Itou Regional Marketing Tokyo 20 2011/08/14 $163,000
Michelle House Integration Specialist Sidney 37 2011/06/02 $95,400
Suki Burks Developer London 53 2009/10/22 $114,500
Prescott Bartlett Technical Author London 27 2011/05/07 $145,000
Gavin Cortez Team Leader San Francisco 22 2008/10/26 $235,500
Martena Mccray Post-Sales support Edinburgh 46 2011/03/09 $324,050
Unity Butler Marketing Designer San Francisco 47 2009/12/09 $85,675
Howard Hatfield Office Manager San Francisco 51 2008/12/16 $164,500
Hope Fuentes Secretary San Francisco 41 2010/02/12 $109,850
Vivian Harrell Financial Controller San Francisco 62 2009/02/14 $452,500
Timothy Mooney Office Manager London 37 2008/12/11 $136,200
Jackson Bradshaw Director New York 65 2008/09/26 $645,750
Olivia Liang Support Engineer Singapore 64 2011/02/03 $234,500
Bruno Nash Software Engineer London 38 2011/05/03 $163,500
Sakura Yamamoto Support Engineer Tokyo 37 2009/08/19 $139,575
Thor Walton Developer New York 61 2013/08/11 $98,540
Finn Camacho Support Engineer San Francisco 47 2009/07/07 $87,500
Serge Baldwin Data Coordinator Singapore 64 2012/04/09 $138,575
Zenaida Frank Software Engineer New York 63 2010/01/04 $125,250
Zorita Serrano Software Engineer San Francisco 56 2012/06/01 $115,000
Jennifer Acosta Junior Javascript Developer Edinburgh 43 2013/02/01 $75,650
Cara Stevens Sales Assistant New York 46 2011/12/06 $145,600
Hermione Butler Regional Director London 47 2011/03/21 $356,250
Lael Greer Systems Administrator London 21 2009/02/27 $103,500
Jonas Alexander Developer San Francisco 30 2010/07/14 $86,500
Shad Decker Regional Director Edinburgh 51 2008/11/13 $183,000
Michael Bruce Javascript Developer Singapore 29 2011/06/27 $183,000
Donna Snider Customer Support New York 27 2011/01/25 $112,000
<script src="vendor/jquery/jquery.min.js"> <script src="vendor/bootstrap/js/bootstrap.bundle.min.js"> <script src="vendor/jquery-easing/jquery.easing.min.js"> <script src="vendor/chart.js/Chart.min.js"> <script src="vendor/datatables/jquery.dataTables.js"> <script src="vendor/datatables/dataTables.bootstrap4.js"> <script src="js/sb-admin.min.js"> <script src="js/demo/datatables-demo.js"> <script src="js/demo/chart-area-demo.js">

Setelah itu, buat sebuah controller baru dengan nama Overview.php di dalam direktori controllers/admin.

Perhatikan nama file untuk controller, di depannya selalu diawali dengan huruf besar atau kapital. Isi controller Overview.php dengan kode berukut: load->view("admin/overview"); } }

Setelah itu, buat sebuah route baru untuk controller Overview. Buka file config/routes.php, lalu tambahkan kode ini: $route['admin'] = 'admin/overview';

Setelah itu coba buka http://localhost/tokobuah/index.php/admin/, maka kita akan mendapatkan tampilan seperti ini:

Kenapa tampilannya berantakan? Ini karena CSS dan Javascript belum berhasil di-load alias Not Found. Coba saja buka view source dari halamannya.

Kalau kita klik link CSS dan Javascriptnya, maka akan Not Found. Kenapa bisa begini? Ini karena alamat yang diberikan pada link tersebut belum benar. Masih mengarah ke /vendor/.... Kita harus mengubahnya agar mengarah ke /assets/..., karena tadi kita sudah mengubah nama vendor menjadi assets. Mari kita perbaiki… Buka file views/overview.php lalu cari link CSS dan javascriptnya.

Setelah itu ubah link-nya dengan link yang benar. Gunakan fungsi base_url()untuk menyisipkan link CSS dan Javascript agar konsisten. Dari kode ini:

<script src="vendor/jquery/jquery.min.js"> <script src="vendor/bootstrap/js/bootstrap.bundle.min.js"> <script src="vendor/jquery-easing/jquery.easing.min.js"> <script src="vendor/chart.js/Chart.min.js"> <script src="vendor/datatables/jquery.dataTables.js"> <script src="vendor/datatables/dataTables.bootstrap4.js"> <script src="js/sb-admin.min.js"> <script src="js/demo/datatables-demo.js"> <script src="js/demo/chart-area-demo.js">

Ubah menjadi seperti ini: <script src=""> <script src=""> <script src=""> <script src=""> <script src=""> <script src=""> <script src=""> <script src=""> <script src="">

Sehingga kode lengkap untuk overview.php akan menjadi seperti ini: <meta <meta <meta <meta <meta

charset="utf-8"> http-equiv="X-UA-Compatible" content="IE=edge"> name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> name="description" content=""> name="author" content="">

SB Admin - Dashboard
Area Chart Example
Data Table Example














Name Position Office Age Start date Salary
Name Position Office Age Start date Salary
Tiger Nixon System Architect Edinburgh 61 2011/04/25 $320,800
Garrett Winters Accountant Tokyo 63 2011/07/25 $170,750
Ashton Cox Junior Technical Author San Francisco 66 2009/01/12 $86,000
Cedric Kelly Senior Javascript Developer Edinburgh 22 2012/03/29 $433,060
Airi Satou Accountant Tokyo 33 2008/11/28 $162,700
Brielle Williamson Integration Specialist New York 61 2012/12/02 $372,000
Herrod Chandler Sales Assistant San Francisco 59 2012/08/06 $137,500
Rhona Davidson Integration Specialist Tokyo 55 2010/10/14 $327,900
Colleen Hurst Javascript Developer San Francisco 39 2009/09/15 $205,500
Sonya Frost Software Engineer Edinburgh 23 2008/12/13 $103,600
Jena Gaines Office Manager London 30 2008/12/19 $90,560
Quinn Flynn Support Lead Edinburgh 22 2013/03/03 $342,000
Charde Marshall Regional Director San Francisco 36 2008/10/16 $470,600
Haley Kennedy Senior Marketing Designer London 43 2012/12/18 $313,500
Tatyana Fitzpatrick Regional Director London 19 2010/03/17 $385,750
Michael Silva Marketing Designer London 66 2012/11/27 $198,500
Paul Byrd Chief Financial Officer (CFO) New York 64 2010/06/09 $725,000
Gloria Little Systems Administrator New York 59 2009/04/10 $237,500
Bradley Greer Software Engineer London 41 2012/10/13 $132,000
Dai Rios Personnel Lead Edinburgh 35 2012/09/26 $217,500
Jenette Caldwell Development Lead New York 30 2011/09/03 $345,000
Yuri Berry Chief Marketing Officer (CMO) New York 40 2009/06/25 $675,000
Caesar Vance Pre-Sales Support New York 21 2011/12/12 $106,450
Doris Wilder Sales Assistant Sidney 23 2010/09/20 $85,600
Angelica Ramos Chief Executive Officer (CEO) London 47 2009/10/09 $1,200,000
Gavin Joyce Developer Edinburgh 42 2010/12/22 $92,575
Jennifer Chang Regional Director Singapore 28 2010/11/14 $357,650
Brenden Wagner Software Engineer San Francisco 28 2011/06/07 $206,850
Fiona Green Chief Operating Officer (COO) San Francisco 48 2010/03/11 $850,000
Shou Itou Regional Marketing Tokyo 20 2011/08/14 $163,000
Michelle House Integration Specialist Sidney 37 2011/06/02 $95,400
Suki Burks Developer London 53 2009/10/22 $114,500
Prescott Bartlett Technical Author London 27 2011/05/07 $145,000
Gavin Cortez Team Leader San Francisco 22 2008/10/26 $235,500
Martena Mccray Post-Sales support Edinburgh 46 2011/03/09 $324,050
Unity Butler Marketing Designer San Francisco 47 2009/12/09 $85,675
Howard Hatfield Office Manager San Francisco 51 2008/12/16 $164,500
Hope Fuentes Secretary San Francisco 41 2010/02/12 $109,850
Vivian Harrell Financial Controller San Francisco 62 2009/02/14 $452,500
Timothy Mooney Office Manager London 37 2008/12/11 $136,200
Jackson Bradshaw Director New York 65 2008/09/26 $645,750
Olivia Liang Support Engineer Singapore 64 2011/02/03 $234,500
Bruno Nash Software Engineer London 38 2011/05/03 $163,500
Sakura Yamamoto Support Engineer Tokyo 37 2009/08/19 $139,575
Thor Walton Developer New York 61 2013/08/11 $98,540
Finn Camacho Support Engineer San Francisco 47 2009/07/07 $87,500
Serge Baldwin Data Coordinator Singapore 64 2012/04/09 $138,575
Zenaida Frank Software Engineer New York 63 2010/01/04 $125,250
Zorita Serrano Software Engineer San Francisco 56 2012/06/01 $115,000
Jennifer Acosta Junior Javascript Developer Edinburgh 43 2013/02/01 $75,650
Cara Stevens Sales Assistant New York 46 2011/12/06 $145,600
Hermione Butler Regional Director London 47 2011/03/21 $356,250
Lael Greer Systems Administrator London 21 2009/02/27 $103,500
Jonas Alexander Developer San Francisco 30 2010/07/14 $86,500
Shad Decker Regional Director Edinburgh 51 2008/11/13 $183,000
Michael Bruce Javascript Developer Singapore 29 2011/06/27 $183,000
Donna Snider Customer Support New York 27 2011/01/25 $112,000
<script src=""> <script src="">



<script src=""> <script src=""> <script src=""> <script src=""> <script src=""> <script src=""> <script src="">

Setelah itu, coba buka kembali http://localhost/tokobuah/index.php/admin/, maka kita akan mendapatkan tampilan seperti ini:

Woho… keren

Apa Selanjutnya? Tugas kita masih belum selesai. Karena kita baru hanya menambahkan Bootstrap dan membuat template awalnya. Selanjutnya kita akan membuat partials untuk menata template agar lebih efektif dan mudah digunakan. Tutorial Codeigniter #4: Teknik Membuat Template Admin yang Efektif Pada tutorial sebelumnya, kita sudah berhasil menambahkan Bootstrap pada proyek CI. Namun, masih ada yang kurang… Template masih dibuat dalam satu file saja. Ini nanti akan bermasalah ketika kita membuat halaman baru. Permsalahannya: Kita akan menulis kode yang sama berulang-ulang dalam file template yang berbeda. Bagaimana nanti kalau ada perubahan? Misal, perubahan link pada navbar. Maka kita harus mengubah semua file template yang kita buat satu per satu. Tentu ini kurang efektif, karena kita akan menghabiskan banyak waktu dan tentaga untuk mengubahnya. Salah satu solusi dari permasalahan ini yaitu dengan menggunakan partials. Dengan partials kita akan membagi template menjadi bagian-bagian kecil yang dapat digunakan kembali. Jika kamu pernah belajar Laravel, kamu mungkin pernah mendengar fungsi yield yang memungkinkan kita untuk mengimpor bagian template yang lain. Fungsi yield di Laravel sering digunakan untuk membuat layout.1 Lalu di Codeigniter, apakah ada fungsi yield? Tidak, di Codeigniter tidak ada fungsi yield. Namun, kita bisa menggunakan fungsi $this>load->view() sebagai penggantinya. Karena fungsinya hampir sama dengan yield, yaitu untuk me-load sebuah view.2

Fungsi $this->load->view() ini, nanti akan kita gunakan untuk me-load partials ke dalam template. Tapi sebelum itu, kita harus membuat dulu partial-nya.

Membuat Partial Template

Partial merupakan teknik untuk membagi template menjadi bagian-bagian kecil agar mudah digunakan.

Sebenarnya teknik ini pertama saya dengar saat membuat template Hugo… …dan rencananya akan saya coba juga terapkan untuk template aplikasi Codeigniter. Sekarang coba buka file index.html pada SB Admin dan perhatikan, apa saja partial yang bisa kita buat dari sana?

Berdasarkan gambar di atas, berikut ini partial yang bisa kita buat:  head.php untuk meinyimpan isi dari tag ;  navbar.php untuk menyimpan kode navbar;  sidebar.php untuk menyimpan kode menu bagian samping (sidebar);  breadcrumb.php untuk menyimpan kode link breadcrumb;  scrolltop.php untuk menyimpan kode tombol scrolltop;  footer.php untuk menyimpan kode footer;  modal.php untuk menyimpan kode modal;  js.php untuk meload javascript. Mari kita buat satu per satu…

Tapi sebelum itu, silahkan buat dulu direktori baru bernama _partials di dalam views/admin/.

Apakah nama direktorinya harus _partials? Tidak harus, karena ada juga membarikan nama includes atau _includes. Nama _partials menurut saya lebih jelas dan menggambarkan isinya. Kenapa ada garis bawah (underscore) di depannya? Ini untuk memudahkan dalam membedakan view dan partial. View akan kita load dari Controller, sedangkan partial akan kita load dari view. Biasanya dalam penulisan kode (OOP), sesuatu yang bersifat private dan lokal kadang ditulis dengan garis bawah di depannya. Oke, lanjut… Berikutnya kita akan membuat semua partial yang telah kita tentukan di atas. Partial head.php

Partial ini berisi kode-kode untuk tag . Kita bisa copy file views/admin/overview.php mulai dari tag sampai penutupnya . Sehinggak kode untuk partial head.php akan menjadi seperti ini:

dari

<meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no"> <?php echo SITE_NAME .": ". ucfirst($this->uri->segment(1)) ." - ". ucfirst($this->uri>segment(2)) ?>

Perhatikan kode pada tag , di sana kita menggunakan sebuah konstanta SITE_NAME untuk menambil nama web. Konstanta ini sudah kita buat pada tutorial sebelumnya. Berikutnya perhatikan di bagian: ucfirst($this->uri->segment(1)) ." - ". ucfirst($this->uri->segment(2))<br /> <br /> Ini akan menjadi judul yang akan tampil di browser. Fungsi ucfirst() untuk membuat huruf besar di awal kata. Lalu judulnya kita ambil dari segment URL. Sehingga nanti pada browser akan tampil seperti ini:<br /> <br /> Partial navbar.php<br /> <br /> Partial ini hanya berisi kode untuk menu navbar. Berikut ini isi kode dari partial navbar.php: <nav class="navbar navbar-expand navbar-dark bg-success static-top"> <a class="navbar-brand mr-1" href="<?php echo site_url('admin') ? rel="nofollow">"><?php echo SITE_NAME ?></a> <button class="btn btn-link btn-sm text-white order-1 order-sm-0" id="sidebarToggle" href="#"> <i class="fas fa-bars"></i> </button> <!-- Navbar Search --> <form class="d-none d-md-inline-block form-inline ml-auto mr-0 mr-md-3 my-2 my-md-0"> <div class="input-group"> <input type="text" class="form-control" placeholder="Search for..." aria-label="Search" aria-describedby="basic-addon2"> <div class="input-group-append"> <button class="btn btn-light" type="button"> <i class="fas fa-search"></i> </button> </div> </div> </form> <!-- Navbar --> <ul class="navbar-nav ml-auto ml-md-0"> <li class="nav-item dropdown no-arrow mx-1"> <a class="nav-link dropdown-toggle" href="#" id="alertsDropdown" role="button" datatoggle="dropdown" aria-haspopup="true" aria-expanded="false" rel="nofollow"> <i class="fas fa-bell fa-fw"></i> <span class="badge badge-danger">9+</span> </a> <div class="dropdown-menu dropdown-menu-right" aria-labelledby="alertsDropdown"> <a class="dropdown-item" href="#" rel="nofollow">Action</a> <a class="dropdown-item" href="#" rel="nofollow">Another action</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="#" rel="nofollow">Something else here</a> </div> </li> <li class="nav-item dropdown no-arrow mx-1"> <a class="nav-link dropdown-toggle" href="#" id="messagesDropdown" role="button" datatoggle="dropdown" aria-haspopup="true" aria-expanded="false" rel="nofollow"> <i class="fas fa-envelope fa-fw"></i> <span class="badge badge-danger">7</span> </a> <div class="dropdown-menu dropdown-menu-right" aria-labelledby="messagesDropdown"> <a class="dropdown-item" href="#" rel="nofollow">Action</a> <a class="dropdown-item" href="#" rel="nofollow">Another action</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="#" rel="nofollow">Something else here</a> </div> </li> <li class="nav-item dropdown no-arrow"> <a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" datatoggle="dropdown" aria-haspopup="true" aria-expanded="false" rel="nofollow"> <i class="fas fa-user-circle fa-fw"></i> Admin </a> <div class="dropdown-menu dropdown-menu-right" aria-labelledby="userDropdown"> <a class="dropdown-item" href="#" rel="nofollow">Settings</a><br /> <br /> <a class="dropdown-item" href="#" rel="nofollow">Activity Log</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="#" data-toggle="modal" datatarget="#logoutModal" rel="nofollow">Logout</a> </div> </li> </ul> </nav><br /> <br /> Pada kode navbar, kita menggunakan konstanta SITE_NAME untuk menampilkan nama web di navbar. Lalu kita menggunakan class bg-success untuk mengubah warnanya menjadi hijau. Supaya selaras dengan brand aplikasinya Ini tampilannya:<br /> <br /> .<br /> <br /> Partial sidebar.php<br /> <br /> Partial ini berisi kode untuk menampilkan menu bagian samping (sidebar). Berikut ini isi kode sidebar.php: <!-- Sidebar --> <ul class="sidebar navbar-nav"> <li class="nav-item <?php echo $this->uri->segment(2) == '' ? 'active': '' ?>"> <a class="nav-link" href="<?php echo site_url('admin') ? rel="nofollow">"> <i class="fas fa-fw fa-tachometer-alt"></i> <span>Overview</span> </a> </li> <li class="nav-item dropdown <?php echo $this->uri->segment(2) == 'products' ? 'active': '' ?>"> <a class="nav-link dropdown-toggle" href="#" id="pagesDropdown" role="button" datatoggle="dropdown" aria-haspopup="true" aria-expanded="false" rel="nofollow"> <i class="fas fa-fw fa-boxes"></i> <span>Products</span> </a> <div class="dropdown-menu" aria-labelledby="pagesDropdown"> <a class="dropdown-item" href="<?php echo site_url('admin/products/add') ? rel="nofollow">">New Product</a> <a class="dropdown-item" href="<?php echo site_url('admin/products') ? rel="nofollow">">List Product</a> </div> </li> <li class="nav-item"> <a class="nav-link" href="#" rel="nofollow"> <i class="fas fa-fw fa-users"></i> <span>Users</span></a> </li> <li class="nav-item"> <a class="nav-link" href="#" rel="nofollow"> <i class="fas fa-fw fa-cog"></i> <span>Settings</span></a> </li> </ul><br /> <br /> Pada kode di atas, kita menggunakan segment URI untuk mengecek apakah menu itu sedang dibuka atau tidak. Jika menu sedang dibuka, maka tambahkan class active. Misalnya ini: <?php echo $this->uri->segment(2) == 'products' ? 'active': '' ?><br /> <br /> Kode ini akan mengecek, apakah halaman /admin/products sedang dibuka atau tidak. Oya, halaman untuk menu products, users, dan settings belum kita buat. Insya’allah di tutorial berikutnya akan kita buat.<br /> <br /> Partial breadcrumb.php Partial ini berisi kode untuk menampilkan breadcrumb. Breadcrumbs adalah sebuah link navigasi yang menampilkan link halaman sebelumnya dari halaman tempat kita berada. Berikut ini kode untuk parital breadcrumb.php: <!-- Breadcrumbs--> <ol class="breadcrumb"> <?php foreach ($this->uri->segments as $segment): ?> <?php $url = substr($this->uri->uri_string, 0, strpos($this->uri->uri_string, $segment)) . $segment; $is_active = $url == $this->uri->uri_string; ?><br /> <br /> <li class="breadcrumb-item <?php echo $is_active ? 'active': '' ?>"> <?php if($is_active): ?> <?php echo ucfirst($segment) ?> <?php else: ?> <a href="<?php echo site_url($url) ? rel="nofollow">"><?php echo ucfirst($segment) ?></a> <?php endif; ?> </li> <?php endforeach; ?> </ol><br /> <br /> Partial scrolltop.php Partial ini berisi kode untuk tombol scrolltop. Berikut ini isinya: <!-- Scroll to Top Button--> <a class="scroll-to-top rounded" href="#page-top" rel="nofollow"> <i class="fas fa-angle-up"></i> </a><br /> <br /> Partial footer.php Partial ini berisi kode untuk bagian footer, berikut ini isi kode untuk partial footer.php: <!-- Sticky Footer --> <footer class="sticky-footer"> <div class="container my-auto"> <div class="copyright text-center my-auto"> <span>Copyright © <?php echo SITE_NAME ." ". Date('Y') ?></span> </div> </div> </footer><br /> <br /> Pada kode partial footer.php, kita menggunakan konstanta SITE_NAME untuk menampilkan nama website. Lalu menggunakan fungsi Date('Y') untuk menampilkan tahun saat ini. Partial modal.php Partial ini berisi kode-kode untuk modal. Berikut ini isinya: <!-- Logout Modal--> <div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" arialabelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Ready to Leave?</h5> <button class="close" type="button" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body">Select "Logout" below if you are ready to end your current session.</div> <div class="modal-footer"> <button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button> <a class="btn btn-primary" href="login.html" rel="nofollow">Logout</a> </div> </div> </div> </div><br /> <br /> Kita juga nanti bisa tambahkan beberapa modal di sini. Partial js.php Partial ini berisi kode-kode untuk me-load Javascript. Berikut ini kode untuk js.php: <!-- Bootstrap core JavaScript--> <script src="<?php echo base_url('assets/jquery/jquery.min.js') ?>"></script> <script src="<?php echo base_url('assets/bootstrap/js/bootstrap.bundle.min.js') ?>"></script> <!-- Core plugin JavaScript--> <script src="<?php echo base_url('assets/jquery-easing/jquery.easing.min.js') ?>"></script> <!-- Page level plugin JavaScript--> <script src="<?php echo base_url('assets/chart.js/Chart.min.js') ?>"></script> <script src="<?php echo base_url('assets/datatables/jquery.dataTables.js') ?>"></script> <script src="<?php echo base_url('assets/datatables/dataTables.bootstrap4.js') ?>"></script> <!-- Custom scripts for all pages--> <script src="<?php echo base_url('js/sb-admin.min.js') ?>"></script> <!-- Demo scripts for this page--> <script src="<?php echo base_url('js/demo/datatables-demo.js') ?>"></script> <script src="<?php echo base_url('js/demo/chart-area-demo.js') ?>"></script><br /> <br /> Kita juga nanti bisa tambahkan beberapa kode javascript di sini. Menggunakan Partials pada Template Kita sudah membuat semua partial yang dibutuhkan:<br /> <br /> Langkah berikutnya, kita harus menggunakannya dalam template. Silahkan ubah isi views/admin/overview.php menjadi seperti ini: <!DOCTYPE html> <html lang="en"> <head> <?php $this->load->view("admin/_partials/head.php") ?> </head> <body id="page-top"> <?php $this->load->view("admin/_partials/navbar.php") ?> <div id="wrapper"> <?php $this->load->view("admin/_partials/sidebar.php") ?> <div id="content-wrapper"> <div class="container-fluid"> <!-karena ini halaman overview (home), kita matikan partial breadcrumb. Jika anda ingin mengampilkan breadcrumb di halaman overview, silahkan hilangkan komentar (//) di tag PHP di bawah. --> <?php //$this->load->view("admin/_partials/breadcrumb.php") ?><br /> <br /> <!-- Icon Cards--> <div class="row"> <div class="col-xl-3 col-sm-6 mb-3"> <div class="card text-white bg-primary o-hidden h-100"> <div class="card-body"> <div class="card-body-icon"> <i class="fas fa-fw fa-comments"></i> </div> <div class="mr-5">26 New Messages!</div> </div> <a class="card-footer text-white clearfix small z-1" <span class="float-left" rel="nofollow">View Details</span> <span class="float-right"> <i class="fas fa-angle-right"></i> </span> </a> </div> </div> <div class="col-xl-3 col-sm-6 mb-3"> <div class="card text-white bg-warning o-hidden h-100"> <div class="card-body"> <div class="card-body-icon"> <i class="fas fa-fw fa-list"></i> </div> <div class="mr-5">11 New Tasks!</div> </div> <a class="card-footer text-white clearfix small z-1" <span class="float-left" rel="nofollow">View Details</span> <span class="float-right"> <i class="fas fa-angle-right"></i> </span> </a> </div> </div> <div class="col-xl-3 col-sm-6 mb-3"> <div class="card text-white bg-success o-hidden h-100"> <div class="card-body"> <div class="card-body-icon"> <i class="fas fa-fw fa-shopping-cart"></i> </div> <div class="mr-5">123 New Orders!</div> </div> <a class="card-footer text-white clearfix small z-1" <span class="float-left" rel="nofollow">View Details</span> <span class="float-right"> <i class="fas fa-angle-right"></i> </span> </a> </div> </div> <div class="col-xl-3 col-sm-6 mb-3"> <div class="card text-white bg-danger o-hidden h-100"> <div class="card-body"> <div class="card-body-icon"> <i class="fas fa-fw fa-life-ring"></i> </div> <div class="mr-5">13 New Tickets!</div> </div> <a class="card-footer text-white clearfix small z-1" <span class="float-left" rel="nofollow">View Details</span> <span class="float-right"> <i class="fas fa-angle-right"></i> </span> </a> </div> </div> </div><br /> <br /> PM</div><br /> <br /> href="#"><br /> <br /> href="#"><br /> <br /> href="#"><br /> <br /> href="#"><br /> <br /> <!-- Area Chart Example--> <div class="card mb-3"> <div class="card-header"> <i class="fas fa-chart-area"></i> Visitor Stats</div> <div class="card-body"> <canvas id="myAreaChart" width="100%" height="30"></canvas> </div> <div class="card-footer small text-muted">Updated yesterday at 11:59<br /> <br /> </div> </div> <!-- /.container-fluid --> <!-- Sticky Footer --> <?php $this->load->view("admin/_partials/footer.php") ?> </div> <!-- /.content-wrapper --> </div> <!-- /#wrapper --><br /> <br /> <?php $this->load->view("admin/_partials/scrolltop.php") ?> <?php $this->load->view("admin/_partials/modal.php") ?> <?php $this->load->view("admin/_partials/js.php") ?> </body> </html><br /> <br /> Pada kode template tersebut, kita me-load partial dengan fungsi $this->load->view(). Maka hasilnya akan seperti ini:<br /> <br /> Mantap… [Download Source Code Tutorial ini: tutorial-4.zip]<br /> <br /> Apa Selanjutnya? Sepertinya masalah template sudah selesai. Kamu juga bisa mengembangkannya sesuai kreasi sendiri. Silahkan pelajari Bootstrap untuk mengetahui class-class CSS yang dapat digunakan. Berikutnya kita bisa mulai membuat fitur baru, seperti:    <br /> <br /> fitur CRUD Produk. fitur upload file. fitur login untuk admin. dll.<br /> <br /> Tutorial Codeigniter #5: Cara Membuat Fitur CRUD yang Benar!<br /> <br /> Pada tutorial sebelumnya, kita sudah belajar bagaimana cara membuat template admin yang benar dan efisien. Kita juga sudah membahas tentang Controller dan routing pada Codeigniter. Nah! yang belum… Pembahasan tentang database dan model. Oke, judulnya ini cukup clickbait: “Cara Membuat Fitur CRUD di Codeigniter yang Benar!” Mengapa saya bilang demikian? Karena, beberapa tutorial Codeigniter yang pernah saya ikuti tidak mengajari praktek terbaik (best practice) dalam ngoding CI. Bukan berarti mereka salah… …dan mengklaim cara pada tutorial ini yang paling benar. Semua cara dan solusi, benar. Hanya saja, jika kita menulis kode sembarangan, akibatnya bisa rugi. Saya pernah mengerjakan project menggunakan Codeigniter, lalu kode-kode yang saya tulis sangat berantakan dan kotor. Hasilnya: Project gagal, karena saya tidak mau mengembangkannya lagi. Ribet! Saya lebih memilih ngoding ulang dari awal daripada mengembangkan kode tersebut. Seperti itulah rasanya menulis kode yang buruk dan kotor. Namun, dari hasil pengulangan tersebut. Saya belajar banyak hal. Seperti, bagaimana sebaiknya cara menerima data dari form. Apakah langsung di simpan ke database, atauhkah divalidasi dulu. Ternyata yang benar adalah: Data harus divalidasi dulu. Jika tidak divalidasi, bisa jadi nanti akan banyak bugs dan rentan dengan serangan XSS. Tambah kerjaan lagi… Belajar dari pengalaman, saya tidak ingin kamu bernasib sama seperti saya yang gagal menyelesaikan project. Maka saya membuat tutorial ini… Jika ada solusi yang lebih baik lagi, silahkan diusulkan di komentar! Oke, kita masuk ke tutorial. Pada tutorial ini, kita akan mengerjakan banyak hal. Mulai dari membuat database, menyiapkan library, membuat model, sampai membuat CRUD. CRUD (Create, Read, Update Delete) adalah fitur dasar yang harus kita buat saat bekerja dengan database. Berikut ini daftar pekerjaannya… TODO: <br /> <br /> Membuat Database;<br /> <br /> <br /> <br /> Konfigurasi Codeigntier<br /> <br /> <br /> <br /> Membuat Model untuk Tabel;<br /> <br /> <br /> <br /> Membuat Controller;<br /> <br /> <br /> <br /> Membuat View;<br /> <br /> <br /> <br /> Membuat Form Add;<br /> <br /> <br /> <br /> Membuat Form Edit;<br /> <br /> <br /> <br /> Membuat Fitur Hapus Data;<br /> <br /> Membuat Database untuk Codeigniter Silahkan buka PHPMyadmin, kemudian buatlah database baru dengan nama tokobuah.<br /> <br /> Setelah itu, buat tabel products dengan 5 kolom. Tabel ini nanti akan menyimpan data produk.<br /> <br /> Kolom yang dibutuhkan: 1. product_id (Primary Key) bertipe string dengan panjang 64; 2. name bertipe string dengan panjang 255. 3. price bertipe integer. 4. image bertipe string dengan panjang 255. 5. description bertipe TEXT. …dan jangan lupa jadikan kolom product_id sebagai primary key. Terakhir, klik Save untuk menyimpan. Sehingga kita sekarang punya tabel products dengan struktur seperti ini:<br /> <br /> Kode SQL-nya: CREATE TABLE `products` ( `product_id` varchar(64) NOT NULL, `name` varchar(255) NOT NULL, `price` int(11) NOT NULL, `image` varchar(255) NOT NULL DEFAULT 'default.jpg', `description` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;<br /> <br /> Satu pekerjaan sudah selesai… TODO: <br /> <br /> Membuat Database;<br /> <br /> <br /> <br /> Konfigurasi Codeigntier<br /> <br /> <br /> <br /> Membuat Model untuk Tabel;<br /> <br /> <br /> <br /> Membuat Controller;<br /> <br /> <br /> <br /> Membuat View;<br /> <br /> <br /> <br /> Membuat Form Add;<br /> <br /> <br /> <br /> Membuat Form Edit;<br /> <br />  Membuat Fitur Hapus Data; Berikutnya kita akan melakukan konfigurasi pada Codeigniter agar dapat terhubung dengan database. Konfigurasi Codeigniter Silahkan buka config/database.php, kemudian isi seperti ini: $db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'dian', 'password' => 'kopi', 'database' => 'tokobuah', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE );<br /> <br /> Perhatikan pada item berikut: 'hostname' 'username' 'password' 'database'<br /> <br /> => => => =><br /> <br /> 'localhost', 'dian', 'kopi', 'tokobuah',<br /> <br /> Silahkan ubah sesuai dengan konfigurasi server mysql pada komputermu. Pada komputer saya, username MySQL-nya adalah dian dan password-nya kopi. Jika kamu menggunakan XAMPP, password-nya biasanya tidak ada dan user yang digunakan adalah root. Gunakan ini untuk XAMPP:<br /> <br /> 'hostname' 'username' 'password' 'database'<br /> <br /> => => => =><br /> <br /> 'localhost', 'root', '', 'tokobuah',<br /> <br /> Berikutnya, silahkan buka config/autoload.php. Kemudian cari $autoload['libraries'] dan tambahkan database dan sessiondi sana. $autoload['libraries'] = array('database', 'session');<br /> <br /> Ini artinya, kita akan me-load library database dan session secara otomatis. Apa fungsinya?  Library database akan menyediakan fungsi-fungsi untuk operasi database. Kita butuh ini, karena kita akan menggunakan database dalam aplikasi;  Library session menyediakan fungsi-fungsi untuk mengakses variabel $_SESSION. Kita butuh ini untuk menampilkan flash message dan membuat login. Dengan demikian konfigurasi selesai… TODO: <br /> <br /> Membuat Database;<br /> <br /> <br /> <br /> Konfigurasi Codeigntier<br /> <br /> <br /> <br /> Membuat Model untuk Tabel;<br /> <br /> <br /> <br /> Membuat Controller;<br /> <br /> <br /> <br /> Membuat View;<br /> <br /> <br /> <br /> Membuat Form Add;<br /> <br /> <br /> <br /> Membuat Form Edit;<br /> <br />  Membuat Fitur Hapus Data; Jika ada yang ingin kita konfigurasi lagi atau mau tambah library lagi, nanti kita bisa ubah konfigurasinya. Untuk saat ini, kita cukup butuh konfigurasi database dan autoload librarysaja. Berikutnya, kita akan mulai menulis kode untuk model.<br /> <br /> Membuat Model untuk Tabel Model merupakan class atau kode yang berhubungan dengan data. Di dalam model, kita akan membuat pemodelan data dari database. Sehingga kita akan lebih mudah mengaksesnya. Biasanya satu tabel, dibuatkan satu modelnya. Silahkan buat file baru di dalam direktori application/model/ dengan nama Product_model.php.<br /> <br /> Perhatikan, namanya harus diawali dengan huruf kapital. Pada contoh di atas, P adalah huruf kapital. Lalu untuk akhiran _model ini bersifat opsional. 1 Saya sengaja membuat akhiran ini untuk memudahkan dalam membedakan class Controller dengan class Model. Nanti kita juga akan membuat class Controller yang bernama Products.php, karena itu kita sebaiknya menggunakan akhiran _model pada class Model. Setelah membuat file, lalu apa lagi? Selanjutnya kita akan mulai menulis kode untuk Product_model.php. Silahkan ketik kode berikut… <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Product_model extends CI_Model { private $_table = "products"; public public public public public<br /> <br /> $product_id; $name; $price; $image = "default.jpg"; $description;<br /> <br /> public function rules() { return [ ['field' => 'name', 'label' => 'Name', 'rules' => 'required'], ['field' => 'price', 'label' => 'Price', 'rules' => 'numeric'], ['field' => 'description', 'label' => 'Description', 'rules' => 'required'] }<br /> <br /> ];<br /> <br /> public function getAll() { return $this->db->get($this->_table)->result(); } public function getById($id) { return $this->db->get_where($this->_table, ["product_id" => $id])->row(); }<br /> <br /> }<br /> <br /> public function save() { $post = $this->input->post(); $this->product_id = uniqid(); $this->name = $post["name"]; $this->price = $post["price"]; $this->description = $post["description"]; $this->db->insert($this->_table, $this); } public function update() { $post = $this->input->post(); $this->product_id = $post["id"]; $this->name = $post["name"]; $this->price = $post["price"]; $this->description = $post["description"]; $this->db->update($this->_table, $this, array('product_id' => $post['id'])); } public function delete($id) { return $this->db->delete($this->_table, array("product_id" => $id)); }<br /> <br /> Sudah selesai ngetiknya?<br /> <br /> Baik, sekarang giliran saya menjelaskan: Kode di atas memang belum bisa kita coba, karena ini hanya pemodelan data saja. Nanti kita akan gunakan fungsi-fungsi atau method yang ada di dalam kode ini pada class Controller. Pertama silahkan perhtaikan bagian ini: private $_table = "products"; //nama tabel // nama kolom di tabel, harus sama huruf besar dan huruf kecilnya! public $product_id; public $name; public $price; public $image = "default.jpg"; public $description;<br /> <br /> Ini adalah properti atau variabel yang kita butuhkan dalam model Product. Pada properti $_tabel kita memberikan modifier private, karena properti ini hanya akan digunakan pada class ini saja. Jika kamu pernah belajar OOP, pasti paham. Lalu pada properti $image, kita langsung mengisi nilainya dengan "default.jpg". Ini nanti akan menjadi nilai default-nya, sebenarnya kita bisa saja tidak isi demikian. Karena di tabel sudah kita berikan nilai default-nya. Selanjutnya silahkan perhatikan method rules(): public function rules() { return [ ['field' => 'name', 'label' => 'Name', 'rules' => 'required'], ['field' => 'price', 'label' => 'Price', 'rules' => 'numeric'], ['field' => 'description', 'label' => 'Description', 'rules' => 'required'] }<br /> <br /> ];<br /> <br /> Method ini akan mengembalikan sebuah array yang berisi rules. Rules ini nanti kita butuhkan untuk validasi input. Pada Rules di atas, kita memberikan aturan untuk wajib mengisi (required)field name, price, dan description. Berikutnya, silahkan perhatikan method get() dan getAll(). Kedua method ini akan kita gunakan untuk mengambil data dari database.<br /> <br /> Berikutnya perhatikan method save():<br /> <br /> Method ini akan kita gunakan untuk menyimpan data ke tabel product. Kita mengambil input yang dikirim dari form menggunakan $this->input->post(). Mengapa ini ditulis di model? Biasanya orang menuliskannya pada Controller. Namun, biar Controller lebih fokus mengatur hubungan Model dengan View, maka sebaiknya ini kita tulis di Model. Karena nanti pada Controller, kita tinggal validasi saja inputannya. Untuk method berikutnya hampir sama. Method update() untuk update data dan delete() untuk menghapus data. Pada method update(), kita mengisi $this->product_id dengan id yang didapatkan dari form ($post['id']). Karena ini untuk update. Sedangkan pada method save(), kita mengisinya dengan fungsi uniqid(). Karena kita akan membuat baru. Fungsi ini nantinya akan menghasilkan karakter unik. </div> </div> <hr /> <h4>Related Documents</h4> <div class="row"> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/tutorial-codeigniter-1-pengenalan-codeigniter-untuk-pemula-pwpem0pnm32z" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/pwpem0pnm32z.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/tutorial-codeigniter-1-pengenalan-codeigniter-untuk-pemula-pwpem0pnm32z" class="text-dark">Tutorial Codeigniter #1: Pengenalan Codeigniter Untuk Pemula</a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> January 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 3</small> <div class="clearfix"></div> </div> </div> </div> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/tutorial-codeigniter-qwy1v047k3wm" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/qwy1v047k3wm.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/tutorial-codeigniter-qwy1v047k3wm" class="text-dark">Tutorial Codeigniter</a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> January 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 0</small> <div class="clearfix"></div> </div> </div> </div> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/diktat-codeigniter-vj20l88r582m" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/vj20l88r582m.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/diktat-codeigniter-vj20l88r582m" class="text-dark">Diktat Codeigniter</a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> January 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 1</small> <div class="clearfix"></div> </div> </div> </div> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/konten-dinamis-menggunakan-codeigniter-r217m7kxzx23" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/r217m7kxzx23.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/konten-dinamis-menggunakan-codeigniter-r217m7kxzx23" class="text-dark">Konten Dinamis Menggunakan Codeigniter</a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> January 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 0</small> <div class="clearfix"></div> </div> </div> </div> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/niagahoster-tutorial-wordpress-untuk-pemula-part-1-5wgg8zgd48w7" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/5wgg8zgd48w7.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/niagahoster-tutorial-wordpress-untuk-pemula-part-1-5wgg8zgd48w7" class="text-dark">Niagahoster - Tutorial Wordpress Untuk Pemula Part 1</a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> January 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 0</small> <div class="clearfix"></div> </div> </div> </div> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/tutorial-cpanel-untuk-pemula-part-1-qojjpzqqd6o9" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/qojjpzqqd6o9.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/tutorial-cpanel-untuk-pemula-part-1-qojjpzqqd6o9" class="text-dark">Tutorial Cpanel Untuk Pemula Part 1</a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> January 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 5</small> <div class="clearfix"></div> </div> </div> </div> </div> <hr/> <h4>More Documents from "Niagaweb"</h4> <div class="row"> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/tutorial-codeigniter-1-pengenalan-codeigniter-untuk-pemula-pwpem0pnm32z" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/pwpem0pnm32z.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/tutorial-codeigniter-1-pengenalan-codeigniter-untuk-pemula-pwpem0pnm32z" class="text-dark">Tutorial Codeigniter #1: Pengenalan Codeigniter Untuk Pemula</a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> January 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 3</small> <div class="clearfix"></div> </div> </div> </div> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/vbook.pub-x256r3y89lop" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/x256r3y89lop.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/vbook.pub-x256r3y89lop" class="text-dark"></a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> February 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 5</small> <div class="clearfix"></div> </div> </div> </div> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/bank-syariah-mandiri-gcg-rgec-42m8zrx98ko1" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/42m8zrx98ko1.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/bank-syariah-mandiri-gcg-rgec-42m8zrx98ko1" class="text-dark">Bank Syariah Mandiri (gcg, Rgec)</a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> March 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 0</small> <div class="clearfix"></div> </div> </div> </div> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/ebook-sahabat-trader-indonesia-qwy1zmjpedwm" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/qwy1zmjpedwm.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/ebook-sahabat-trader-indonesia-qwy1zmjpedwm" class="text-dark">Ebook Sahabat Trader Indonesia</a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> January 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 1</small> <div class="clearfix"></div> </div> </div> </div> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/basic-design-evaluation-of-english-learning-diah-safithri-armin-mpd-lon77k6zgj23" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/lon77k6zgj23.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/basic-design-evaluation-of-english-learning-diah-safithri-armin-mpd-lon77k6zgj23" class="text-dark">Basic Design Evaluation Of English Learning: Diah Safithri Armin, M.pd</a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> January 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 1</small> <div class="clearfix"></div> </div> </div> </div> <div class="col-lg-2 col-md-4 col-sm-6 col-6"> <div class="card item-doc mb-4"> <a href="https://vbook.pub/documents/tabel-hitung-beton-dan-baja-642mkm04l4o1" class="d-block"><img class="card-img-top" src="https://vbook.pub/img/crop/300x300/642mkm04l4o1.jpg" alt=""/></a> <div class="card-body text-left"> <h5 class="card-title"><a href="https://vbook.pub/documents/tabel-hitung-beton-dan-baja-642mkm04l4o1" class="text-dark">Tabel Hitung Beton Dan Baja</a></h5> <small class="text-muted float-left"><i class="fas fa-clock"></i> February 2021</small> <small class="text-muted float-right"><i class="fas fa-eye"></i> 0</small> <div class="clearfix"></div> </div> </div> </div> </div> </div> </div> </div> </div> <footer class="footer pt-5 pb-0 pb-md-5 bg-primary text-white"> <div class="container"> <div class="row"> <div class="col-md-3 mb-3 mb-sm-0"> <h5 class="text-white font-weight-bold mb-4">Nossa Empresa</h5> <ul class="list-unstyled"> <li><i class="fas fa-location-arrow"></i> 2564 Malvina Cliff Grand Marsh, WI 53936</li> <li><i class="fas fa-phone"></i> +598.347.0652</li> <li><i class="fas fa-envelope"></i> <a href="mailto:info@vbook.pub" class="text-white">info@vbook.pub</a></li> </ul> </div> <div class="col-md-3 mb-3 mb-sm-0"> <h5 class="text-white font-weight-bold mb-4">Ligações rápidas</h5> <ul class="list-unstyled"> <li><a href="https://vbook.pub/about" class="text-white">Sobre</a></li> <li><a href="https://vbook.pub/contact" class="text-white">Contacto</a></li> <li><a href="https://vbook.pub/help" class="text-white">Ajuda / FAQ</a></li> <li><a href="https://vbook.pub/account" class="text-white">Account</a></li> </ul> </div> <div class="col-md-3 mb-3 mb-sm-0"> <h5 class="text-white font-weight-bold mb-4">Legal</h5> <ul class="list-unstyled"> <li><a href="https://vbook.pub/tos" class="text-white">Termos de Serviço</a></li> <li><a href="https://vbook.pub/privacy-policy" class="text-white">Política de privacidade</a></li> <li><a href="https://vbook.pub/cookie-policy" class="text-white">Política de bolachas</a></li> <li><a href="https://vbook.pub/disclaimer" class="text-white">Aviso Legal</a></li> </ul> </div> <div class="col-md-3 mb-3 mb-sm-0"> <h5 class="text-white font-weight-bold mb-4">Siga-nos</h5> <ul class="list-unstyled list-inline list-social"> <li class="list-inline-item"><a href="#" class="text-white" target="_blank"><i class="fab fa-facebook-f"></i></a></li> <li class="list-inline-item"><a href="#" class="text-white" target="_blank"><i class="fab fa-twitter"></i></a></li> <li class="list-inline-item"><a href="#" class="text-white" target="_blank"><i class="fab fa-linkedin"></i></a></li> <li class="list-inline-item"><a href="#" class="text-white" target="_blank"><i class="fab fa-instagram"></i></a></li> </ul> <h5 class="text-white font-weight-bold mb-4">Mobile Apps</h5> <ul class="list-unstyled "> <li><a href="#" class="bb-alert" data-msg="IOS app ainda não está disponível! Por favor tente novamente mais tarde!"><img src="https://vbook.pub/static/images/app-store-badge.svg" height="45" /></a></li> <li><a href="#" class="bb-alert" data-msg="ANDROID app ainda não está disponível! Por favor tente novamente mais tarde!"><img style="margin-left: -10px;" src="https://vbook.pub/static/images/google-play-badge.png" height="60" /></a></li> </ul> </div> </div> </div> </footer> <div class="footer-copyright border-top pt-4 pb-2 bg-primary text-white"> <div class="container"> <p>Copyright © 2024 VBOOK.PUB.</p> </div> </div> <script src="https://vbook.pub/static/javascripts/jquery.min.js"></script> <script src="https://vbook.pub/static/javascripts/popper.min.js"></script> <script src="https://vbook.pub/static/javascripts/bootstrap.min.js"></script> <script src="https://vbook.pub/static/javascripts/bootbox.all.min.js"></script> <script src="https://vbook.pub/static/javascripts/filepond.js"></script> <script src="https://vbook.pub/static/javascripts/main.js?v=1714007457"></script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-9JVH2DJ955"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-9JVH2DJ955'); </script> <script> jQuery.ajax({ url: "https://embed.vbook.pub/show.php", type: 'post', dataType: 'json', data: { code: "TcD6pS6CbGW3x0lPvvJwMDNgO8tMzFFR+koX66q62LJoGQ7fbYknvSpywukmTjW9DqfuIYhijNnZLISCvhZnd4M+snQwIUN/MoD2XUhUWdE=" }, success: function (response) { let window_height = window.innerHeight; let header_height = jQuery('header').innerHeight();; let previewbar_height = jQuery("#preview-bar").innerHeight(); let iframe_height = window_height - header_height; let src = response.html; let loadiframe = "<iframe rel=\"nofollow\" src=\"" + src + "\" style=\"border: none; width: 100%; margin: 0;\" height=\"" + 600 + "\"><\/iframe>"; jQuery('#embed-viewer').html(loadiframe); } }); </script> </body> </html>