MVC PHP (Repaired)
MVC PHP (Repaired)
Kompetensi Dasar :
Membuat aplikasi sederhana yang menerapkan konsep MVC menggunakan teori Object Oriented
Programming.
Pendahuluan
Controller berupa class yang ada methodnya
Localhost/phpmvc/[Link](controller)/method/parameter
Pola selain MVC salah satunya disebut prosedural, dimana penulisan program dari
prosedural adalah menyimpan semuanya dalam satu halaman. Baik itu tampilan (presentasi),
data, dan juga proses. Akan menjadi masalah jika programnya semakin besar dan bekerja-sama
dengan banyak orang secara kolaboratif, menggunakan teknik prosedural pasti akan merepotkan.
Contoh framework
Framework
A. Codeigniter, Laravel, Yii
B. Spring MVC, JSF, Struts
C. Django, CherryPy
D. Ruby On Rails, Sinatra
E. Angular JS, React, Backbone,
Index sebagai halaman yang pertama diakses oleh user. Lalu ke bagian
Routing untuk menentukan request di URL ini yang bertanggung jawab controller yang mana
Controller mengecek apakah butuh model, jika butuh maka akan akses model
View akan tampil menurut yang sudah diatur/dipilih oleh controller. Setelah dipilih lalu dikirim
Index
Mempersiapkan struktur folder untuk aplikasi MVC dan file utama apa saja yang nantinya akan
kita gunakan.
1. Buat folder di folder htdocs dengan nama : phpmvc
2. Buka folder phpmvc di code editor
3. Buat folder didalam phpmvc dengan nama : public
Yang nantinya akan menyimpan semua file yang bisa diakses oleh User. Yang utamanya
nanti kita akan simpan file index kita didalam folder public [Link] lain seperti css,
javascript, gambar akan kita simpan di folder ini.
4. Buat folder didalam public dengan nama : css untuk menyimpan css
6. Buat folder didalam public dengan nama : img untuk menyimpan gambar
7. Buat folder didalam phpmvc dengan nama : app untuk menyimpan folder dan file utama dari
aplikasi MVC.
8. Buat folder didalam app dengan nama : core. Berisi inti dari MVC misalnya mengelola
routing
9. Buat folder didalam app dengan nama : controllers tempat menyimpan controller
10. Buat folder didalam app dengan nama : views tempat menyimpan file tampilan program
11. Buat folder didalam app dengan nama : models tempat menyimpan perintah untuk
menghubungkan dengan database
12. Buat sub folder di dalam views untuk menyimpan kumpulan views sesuai dengan controller
yang memanggilnya nanti, dengan nama : home. Artinya semua tampilan hasil dari
controller home ini akan kita simpan kedalam folder home. Jadi nantinya ketika misalnya
kita punya controller dengan nama home. Yang di dalam controller itu ada banyak method
yang bisa direpresentasikan menjadi beberapa halaman \, tiap-tiap halaman itu kita simpan
viewnya didalam folder home ini.
13. Kita butuh file utama yang akan diakses oleh user. Dan file itu akan kita simpan didalam
folder Public.
14. Jadi alamat utama aplikasi mvc adalah folder public ini. Dan folder app nantinya tidak akan
mungkin bisa diakses oleh user.
15. Menjalankan file index pada program lewat url
18. Didalam file [Link] akan memanggil menggunakan require_once file utama yang akan kita
buat di folder core yang nama filenya [Link] menandakan bahwa ini adalah class
20. Require satu file lagi yang namanya [Link] yang ada didalam folder core
23. Isi dari [Link] adalah class. Bedakan dengan controller yang ada di folder
controllers. Jadi class Controller/php ini adalah class utama sedangkan class-class yang ada
di folder controllers adalah controller yang akan extends ke class utama [Link] yang
mengatur semua class yang akan kita buad didalam folder controllers.
24. Setelah dua buah class utama yaitu App dan Controller dibuat, maka program akan berjalan
25. Untuk menyelesaikan proses bootstraping ini tinggal kita ke file [Link] kita
jalankan/instansiasi class App yang sudah kita buat. Caranya :
27. Kesimpulan : Struktur aplikasi sudah sesuai dengan MVC, inisialisasi/bootstrapingnya sudah
jalan.
Routing
Maka jika pada url kita tambahkan [Link] hasilnya akan tetap kosong
2. Kita akan mengirim sebuah data dengan nama url yang isinya coba
8. Panggil melalui construct. url di isi dengan method parseURL, lalu tampilkan menggunakan
var_dump
Maka program akan berjalan
9. Menulis ulang url supaya rapih, kita akan menggunakan sebuah teknik untuk melakukan
konfigurasi pada direktori kita menggunakan file htaccess. File yang bisa kita gunakan untuk
memodifikasi konfigurasi dari server apache kita. Dan itu bisa kita lakukan per folder.
10. Kita dapat membuka folder app dan memanggil file [Link], padahal seharusnya user tidak
boleh membukanya.
11. Bagaimana cara untuk blok akses tersebut ?
12. Menggunakan file .htaccess.
13. Arahkan ke folder yang akan kita blok aksesnya yaitu folder app. Maka buat file .htaccess
didalam folder app
14. Disini kita bisa tulis konfigurasi server untuk folder ini, misalnya : Options –indexes ini
artinya kalau misalkan ada user yang buka folder app dan folder-folder didalamnya selama
didalam folder itu tidak ada file index maka jangan tampilkan isi foldernya/blok aksesnya.
16. Kita akan lakukan hal yang berbeda dengan folder app. Isinya yang pertama adalah Options
– Multiviews untuk menghindari kesalahan atau ambigu ketika kita memanggil folder atau
file didalam public ini.
17. Lalu kita akan melakukan rewrite atau menulis ulang url yang ada di browser kita nanti. Jadi
kita akan panggil sebuah keyword namanya rewriteEngine On untuk menjalankan proses
rewritenya
c. Aturan untuk menulis ulang urlnya dengan rewriteRule kita akan menuliskan
reguler expression dimulai dengan tanda ^ artrinya membaca apapun yang ada di
url mulai dari awal (setelah folder public) begitu public/ langsung diambil
stringnya, lalu dalam kurung ambil apapun karakternya satu-persatu sampai
karakternya selesai/ambil semua karakter apapun karakternya sampai habis
setelah itu arahkan ke file [Link] yang mengirimkan url dimana nanti isi dari
urlnya kita simpan di placeholder. Dan diakhir kita kasih flag/aturan [L] artinya
jika ada rule yang sudah terpenuhi jangan jalankan rule lain setelah ini. Untuk
menghindari ketika ada orang yang ingin melakukan sesuatu yang tidak kita
inginkan.
22. Membersihkan urlnya agar tidak ada tanda slash diakhir urlnya.
23. Gunakan fungsi rtrim() apa yang mau dihapus yaitu slash yang diakhir
Menjadi
24. Kita akan bersihkan url nya dari karakter yang tidak kita inginkan menggunakan fungsi
filter_var(variabel) kita bersihkan urlnya menggunakan parameter
FILTER_SANITIZE_URL supaya url kita bersih dari karakter aneh
25. Urlnya kita pecah berdasarkan tanda slash menggunakan fungsi explode() dengan
delimiternya adalah slash. Dan nanti slashnya ilang stringnya berubah menjadi elemen array
dari $url
Controller
Membuat properti class App untuk menentukan controller method dan parameter defaultnya.
Disini kita akan bikin property yang akses modifiernya protected controller yang defaultnya
adalah home.
Buat properti lagi dengan nama method yang defaultnya adalah index
Buat parameter dengan nama params karena tidak hanya Satu, kita buat array
Jadi nanti kita punya controller dan method yang default. Sekarang kita buat file di folder
controller dengan nama yang sama dengan nama classnya nanti. Misalnya kita akan buat
controller namanya home. Jadi nama filenya [Link]. Didalamnya kita buat tag php, lalu kita
buat class namanya Home
Nantinya class Home ini akan mewarisi sifat yang ada di file controller yang ada di folder core.
Didalamnya kita akan buat method index untuk menjadi method defaultnya.
Jadi nanti jika kita tidak menuliskan apapun didalam urlnya maka method inilah yang akan
dipanggil. Untuk sementara kita tampilkan home/index untuk mengetahui bahwa yang dipanggil
adalah class Home dengan method index.
Sekarang kita ke file [Link]. masuk kebagian constructnya. Var_dump boleh dihapus saja.
Hapus var_dump
Kita tahu bahwa $url berisi apapun yang akan kita ketikan didalam urlnya. Kita bisa tau jika kita
tulis home slash index maka home itu pasti controller dan index itu pasti method, jadi kita
bisa tulis begini : cek terlebih dahulu apakah ada sebuah file didalam folder controller yang
namanya sesuai dengan nama yang kita tulis di url. Adakah filenya ? cara penulisannya :
Jika filenya ada didalam folder controller, jadi kita arahkan ke folder controller. Saat ini kita
berada di index, file yang pertama diakses adalah index jadi kita keluar dulu, lalu masuk ke
folder app dan masuk ke controllers. Kemudian kita gabung (concate) dengan $url yang
indexnya keberapa, pada url, home adalah elemen pertama di array, index ke 0, maka kita isi
$url[0], kemudian kita gabung lagi dengan extension php. Jadi istilahnya adakah file yang
namanya [Link] didalam folder controllers
jika ada kita timpa controller yang home menjadi controller yang baru yaitu kita panggil
controllernya
Unset url berfungsi untuk mengambil controllernya, mari kita buktikan dengan var_dump
Hapus bagian unset, buat var_dump $url
Maka hasilnya
Maka hasilnya
Tidak tampil apapun karena controller yang kita gunakan adalah controller default
Sekarang kita sudah tau controller mana yang digunakan, sekarang kita panggil controllernya.
Kita require_once ke folder app yang saat ini kita berada di folder [Link] kita gabungkan
dengan controller yang baru gabungkan juga dengan .php.
Setelah kita panggil baru kita instansiasi supaya kita bisa memanggil methodnya nanti
Sekarang kita buat untuk methodnya. Untuk methodnya kita cek terlebih dahulu. Jika methodnya
diurl index ke 1 di set/ditulis,
kita cek lagi adakah method didalamnya dengan cara, jika method ada / method_exists didalam
sebuah object adakah methodnya. Kita tulis dari controllernya adakah methodnya url 1, siapa tau
controllernya ada methodnya tidak ada.
Tapi jika ada kita timpa methodnya diisi dengan url index ke 1.
Lalu kita unset lagi url [Link] sisanya hanya parameternya saja. Itupun jika ada.
Terakhir kita kelola parameternya. Paremeter adalah data yang dikirim dari url setelah controller
dan methodnya.
Satu dan dua adalah parameter, jika kosongpun tidak masalah, tapi jika ada akan kita kelola.
Cara mengambilnya bagaimana ?
Kita cek terlebih dahulu adakah parameternya. Jika urlnya tidak kosong, kita var_dump terlebih
dahulu.
Kenapa controller dan methodnya tidak hilang padahal sudah kita unset.? Karena kita belum
punya controller about dan method page. Sekarang kita buat terlebih dahulu.
1. Ke folder controllers idalam folder app
2. Buat file baru dengan nama [Link]
4. Cek di browser
Jadi kita bisa tulis property params yang di isi dengan array_values($url). Hapus
var_dump
Program tidak berjalan karena tidak memiliki method asdasd dan method default
17. Memanggil controller about dan method page yang sudah kita buat
24. Sekarang Ada masalah jika parameternya kosong program akan error
Karena harus ada parameter.
25. Untuk itu kita berikan parameter default
View
Review Controller dimana kita sudah berhasil membuat routing dan controller sehingga
kita bisa mengelola url jadi sesuai alur mvcnya. url utama kita, url utama aplikasi kita adalah
phpmvc/public saat di enter akan otomatis mengakses controller dan method default meskipun
tidak kita tulis di url. Ini semua bisa dilakukan karena menggunakan teknik htaccess. Kita
menulis ulang urlnya sehingga dia mengarah otomatis ke halaman [Link] dengan
mengirimkan data berupa url.
Jadi apabila kita isi sembarang pada url setelah public artinya kita sedang mencari
controller yang namanya ada di url. Karena kita tidak punya maka akan diarahkan ke controller
dan method defaultnya. Ketika kita punya controller dan methodnya contohnya setelah public
tambahkan about/index maka akan diarahkan ke controller about dan method index. Dan apabila
kita coba untuk mengirimkan data lewat urlsetelah about misalnya about/Prima/Jakarta maka
data ini akan ditangkap oleh methodnya dan digunakan didalam halamannya.
Coba ke controller home perhatikan didalam method index yang akan kita lakukan adalah
memanggil sebuah view dari folder views. Caranya kita akan panggil method view yang
nantinya kita akan simpan di class controller yang ada di core. Isinya adalah alamat menuju ke
view yang kita mau akses. Misalnya kita tulis home/index artinya kita akan memanggil file yang
ada di folder views lalu ke folder home lalu filenya namanya [Link]
Buat file di folder home yang ada didalam folder views dengan nama [Link] yang berisi html.
Ketika dijalankan akan error karena belum ada method viewnya di dalam folder core
Didalam method view membutuhkan parameter $view nya apa yang tadi kita tulis yang ada di
file index home/index nanti ditangkap method view. Parameter kedua adalah data siapa tau ada
data yang mau dikirim kedalam view itu nah datanya kita kasih nilai default berupa array karena
mungkin aja datanya banyak atau bahkan tidak ada data yang dikirimkan. Jadi apabila tidak ada
data yang dikirim nilaiya array kosong.
Isinya kita panggil viewnya yang ada difolder views caranya kita require saja. Anggap saja kita
sedang difolder index berarti kita harus keluar folder dulu masuk ke folder app masuk ke folder
views.
Memperbaiki halaman about. Didalam class about terdapat dua buah method index dan page.
Kita akan buat dua buah view yang pertama memanggil halaman index.
View yang kedua yang kita panggil method page menggunakan controller about
Kita akan buat viewnya. Didalam folder views buat folder dengan nama about
Didalamnya kita buat dua view yang pertama adalah [Link]
Terjadi error karena tidak mengenali method about, bagaimana cara mengatasi hal tersebut ?
Method about mesti extends ke controller
Kita jalankan browsernya
Halaman page
Sekarang yang kita lakukan adalah mengirim data ke view lewat method index yang ada di
dalam controller about. Jika kita lihat di controller ada parameter $data yang siap menerima data.
Jadi jika kita ingin mengirim data ke method index yang ada di controller about maka tambahkan
$data.
Program tidak error, dan sudah dikirim ke halaman web. Tetapi belum digunakan. Bagaimana
cara menggunakannya ?
Buka halaman index yang ada di views about
Tambahkan teks untuk menampilkan
Tampilan di browser
Hanya saja datanya belum mengambil dari parameter. Bagaimana caranya mengambil data dari
parameter ?
F. Isinya :
Cut dari index, kemudian simpan di [Link]
G. Buat file baru didalam templates dengan nama : [Link] untuk menyimpan tag penutup
body dan html
J. Kita akan lakukan hal yang sama disemua method controller about
K. Maka pada view index di folder about, bagian header dan footernya dihapus
L. Begitu juga file yang di halaman page didalam folder about, hapus bagian header dan
footernya
O. Hanya saja pada tab tulisannya masih sama, bagaimana cara merubahnya ?
P. Karena headernya halaman home maka dari itu kita akan kirim $data dengan
parameternya disetiap methodnya. Ke halaman header yang ada di templates
Membuat variabel dengan parameter yang akan digunakan disetiap halaman
Setelah menentukan isinya, sekarang variabel $data kirim melalui halaman header
Yang akan kita lakukan adalah membuat tampilan menggunakan bootstrap dan javascript.
Download bootstrap di [Link] .
Extract file bootstrap, terdapat dua folder css dan javascript.
Jika kita menggunakan hrefnya default maka yang css kita gunakan adalah versi online.
Bagaimana jika kita akan menggunkan versi offline atau yang sudah kita copy ke folder css
didalam public ?
Hrefnya arahkan mulai dari server -> folder utama -> folder public -> dan css lalu terakhir kita
arahkan ke file bootstrapnya [Link]
Footer juga akan kita atur dengan copy perintahnya dari web getbootstrap
Copy sebelum tag body
Yang kita ubah file javascriptnya, jquery dan proper biarkan tetap online
Artinya bootstrap sudah berhasil terpanggil, menggunakan folder public dengan absolute url
Jika kita mengubah alamat urlnya, misalnya nama foldernya bukan phpmvc tapi mvc maka kita
harus mengubah semua linknya satu-persatu. Jika nantinya ada file yang lupa untuk dirubah
maka file tersebut tidak akan berjalan. Daripada mengubah linkya satu-persatu, kita bisa
menggunakan teknik constant. Menyimpan satu kali dan digunakan berulang-ulang.
Buat didalam folder core satu file baru dengan nama : [Link] untuk menyimpan semua
konstanta yang nantinya kita gunakan.
Gunakan keyword define, nama konstantanya, dan isinya.
Jadi jika ingin mengubah urlnya lewat file constants hanya satu kali saja
Setelah itu file constant kita require/panggil supaya kita bisa gunakan
Kita buka file [Link] tambahkan requirenya
copy
Simpan dibagian header
Maka hasilnya
Tampilan di browser
Menambahkan gambar : siapkan gambarnya didalam folder image, ingat nama dan ekstensinya
Model adalah bisnis logic dari aplikasi yang kita buat dan yang paling sederhana adalah ketika
kita akan mengolah data.
Studi kasus :
Melalui controller home kita bisa mengirimkan data ke view, caranya :
Buat method untuk mengelola model melalui controller utama yang terdapat di folder core
Isinya kita akan merequire file model yang ada didalam folder models. Berarti kita keluar folder
terlebih dahulu, masuk ke folder app, folder models, nama modelnya, gabung dengan .php
Karena model adalah class maka kita instansiasi terlebih dahulu, berbeda dengan view bisa
langsung kita panggil. Tambahkan dibawahnya instansiasi objectnya.
Buat controller baru untuk mengelola student. Yang berisi class Student yang methodnya index
Karena file indexnya belum kita buat, coba kita ke folder views. Kita buat folder baru sesuai
dengan yang dikirim oleh controller
Program berjalan tetapi datanya masih kosong karena memang belum kita buat.
Setelah itu kita ke controller siswa yaitu student kita kirim datanya, misalkan kita punya data
sis yang diambil dari model yang nama classnya Siswa_model dengan methodnya getAllSiswa.
Lalu kita kirimkan datanya ke view index yang didalam folder siswa
Jadi data sis sudah bisa digunakan di halaman view index siswa. Tampilkan dengan array
Isinya adalah
Variabel $dsn sebagai identitas server diisi dengan koneksi PDO mysql, hostnya, nama
databasenya,
Dibawahnya kita cek dengan exception handler blok try catch apakah koneksinya berhasil atau
tidak.
Untuk mendapatkan semua mahasiswa kita butuh querynya, database handlernya, jika
menggunakan PDO querynya kita prepare dulu. Pilih database dengan nama databasenya.
perbaiki bagian
Database Wrapper
Kita kembali ke kodingan kita sudah berhasil membuat class Siswa_model yang didalamnya
berisi pengelolaan data yang spesifik untuk tabel pengelolaan mahasiswa saja. Dimana kita
sudah berhasil konek
Jadi yang akan kita lakukan kali ini adalah memindahkan kode-kode yang ada didalam model ini
kedalam class terpisah. Sekarang yang akan kita lakukan adalah membuat file baru didalam
folder core ini dengan nama : database.
Tapi sebelumnya kita akan buat sebuah folder didalam app yang nantinya berisi konfigurasi dari
mysqlnya. Karena kita akan ubah cara ini
jadi isi dari file constants bisa kita pindahkan ke config. Jadi kita tidak butuh lagi file constants
ini.
Kenapa begitu ?
cara mengatasinya berarti kita harus ubah juga file [Link] jadi sekarang kita bukan connec ke
constants lagi tapi konek ke [Link]
yang pertama kita akan tulis data dari database kita yang ada didalam file config tadi, jadi kita
bisa tulis dengan visibilitynya private karena kita tidak ingin propertynya di akses oleh bagian
lain.
Sebetulnya untuk database ini kita butuh satu parameter baru yang kita beri nama : $option
Option digunakan untuk optimasi koneksi database kita. Jadi kita harus buat dulu yang
merupakan parameter dari konfigurasi databasenya.
Kita buat agar koneksi databasenya terjaga terus. Tambahkan agar kode errornya dapat
digunakan.
Selanjutnya kita butuh function untuk menjalankan query. Kita kasih parameternya query
Dan querynya generik dapat menjalankan perintah CRUD. Inilah tujuan membuat wrapper agar
dapat digunakan secara fleksibel. Yang isinya statement sama dengan handlernya prepare dan
parameternya $query. Jadi kita siapkan dulu querynya kira-kira user maunya apa.
Selanjutnya kita butuh binding datanya. Siapa tau didalam querynya itu ada parameter, nilainya,
dan tipenya apa. Untuk itu kita kasih nilai default null, supaya yang menentukan adalah
aplikasinya.
Kita akan melakukan pengecekan. Kalo tipenya null, kan pasti null ya. Fungsi ini jalan dan kita
akan lakukan sesuatu
Isinya adalah
Menggunakan switch agar programnya jalan.
Menggunakan case, jika case/tipenya integer tipenya kita set menjadi parameternya integer
Jika tipe/valuenya boolean, tipenya kita set menjadi parameter boolean
Jika sudah ketahuan kita bind valuenya, jadi misalkan where id misalkan satu. Nah satunya akan
dicek, satu itu apasih, oh integer. Berarti kasih optionnya integer lalu satu itu kita bind ke
parameternya apa, valuenya apa, typenya apa. Kenapa kita bind, kenapa tidak kita langsung
masukan kedalam querynya supaya aman,dengan ini pasti terhindar dari sql injection karena
query dieksekusi setelah stringnya dibersihkan dahulu
Setelah kita eksekusi hasilnya kita ingin banyak atau hanya salah satu saja. Jika banyak kita set.
Eksekusi datanya lalu kembalikan nilainya.
Untuk mengambil dan menampilkan data yang hanya satu kita menggunakan fungsi single
Jadi inilah wrappernya yang bisa kita gunakan untuk model manapun nantinya.
Sebelum kita gunakan wrappernya, database harus kita load/panggil dahulu. Kita ke file [Link],
panggil datanya disini.
Sekarang kita ke siswa_model yang akan kita atur spesifik table yang mana. Tabel yang akan
kita gunakan adalah siswa. Lalu kita buat variabel untuk menampung kelas databasenya
[Link] $db. Sehingga kita bisa gunakan construct, begitu dipanggil construcnya langsung
konek ke database.
Untuk method getAllSiswa isinya tidak lagi memanggil databasenya karena sudah dilakukan
oleh wrapper. Kita akan jalankan query dengan nama instanse objectnya yaitu db
$this->db->query. Query yang ada di class database. Querynya dijalankan menggunakan select *
from tabel dari table. Lalu kita kembalikan hasilnya menggunakan fungsi resultSet.
Jalankan program di browser :
Contoh mengambil satu data :
⮚ Cari list group di bootstrap
⮚ Kita ke view siswa masuk ke index
⮚ Buat ul dengan class list-group
⮚ Buat li dengan class list-group-item
⮚ Panggil variabel dengan valuenya
⮚ Lakukan pengulangan pada isi datanya
Kita akan tambahkan tombol untuk kehalaman detail buat linknya kita menggunakan tag a
Maka hasilnya
Maka hasilnya
Jika detail di klik akan ke method baru yang ada di controller siswa. Jadi nanti di linknya ke
siswa/detail.
Nanti detail ini akan mengirim id dari siswanya. Jadi nanti pas di klik kita tau siswa mana
yang akan kita lihat detailnya.
Ambil Idnya
Buat perintah untuk menyimpan data yang akan kita binding. Jadi id nya tidak langsung kita
masukkan $id untuk menghindari sql injection untuk mengamankan query kita.
Kita sudah kirim datanya ke variabel, tapi yang kita butuhkan viewnya bukan index tapi
detail dan kita belum punya view detailnya.
Sekarang kita buat view detailnya. Kita ke folder view/siswa beri nama filenya [Link]
Isinya buat dengan container. Margin topnya 5. Isi menggunakan card
Tampilannya ketika link detail kita klik
Kita akan buat tombol untuk menambah data dan masuk ke form tambah data. Buka view
index/siswa menggunakan modal box bootstrap.
Buka website bootstrap -> documentation -> search -> modal components. Copy file yang ada di
live demo.
Copy isinya.
Ubah tulisan => Save Changes nya menjadi => Add Student
Hasilnya di browser
Berikutnya kita buat actionnya kita arahkan ke mahasiswa dengan method baru nanti kita buat
nama methodnya tambah.
Arahkan ke baseurl => controllernya=>student/method=>tambah.
Ubah menjadi
Kita akan kelola datanya. Kita ke controller [Link] kita buat method baru namanya tambah
seperti yang telah kita buat di urlnya.
Jadi nanti ketika formnya di isi lalu ditekan tombol tambah data akan dikirimkan ke method
tambah di dalam variabel $_POST. Coba kita cek dengan vardump
Hasilnya di browser
Kita input, maka
Ambil $data hasil dari POST nya yang nama indexnya “nama”
Nama kita dapat dari atribut name dari form. Pastikan juga nama fieldnya sama.
Ulangi langkah diatas untuk menambahkan nis, email, dan jurusan
Flash Message
Flash Message adalah pesan kilat yang akan kita gunakan ketika kita telah selesai mengerjakan
suatu aksi didalam CRUD. Dan untuk membuat flash message ini kita membutuhkan sebuah
konsep SESSION dengan memanfaatkan variabel super global $_SESSION.
Flash Message hanya akan tampil satu kali ketika berhasil atau gagal saja, setelah itu ketika kita
berpindah kehalaman lain, notifikasi itu harusnya hilang.
Kita ke folder core kemudian kita akan buat class baru yang akan menangani flash messagenya
yaitu => [Link]
Karena class bootstrap ada banyak untuk menentukan warna apa yang akan kita gunakan.
Misalkan berhasil kita akan gunakan yang hijau namanya success. Kalau gagal kita akan
gunakan yang merah namanya danger.
Didalam method kita akan set SESSION nya berisi data-data yang kita kirimkan.
Selanjutnya kita buat method static untuk melakukan flashnya untuk menampilkan pesannya.
Isinya adalah mengecek apakah session nya sudah di set, jika ada kita tampilkan pesannya.
Pesan akan kita tampilkan menggunakan bootstrap. Kita cari bagian alert. Cari yang ada tombol
closenya.
Akan ada yang kita ubah, perhatikan warning, digunakan untuk menampilkan warna kuning.
Sedangkan kita kan menampilkannya sesuai dengan tipe yang dikirim di parameter.
Penulisannya :
Setelah datanya selesai ditampilkan, lalu kita hapus sessionnya menggunkan function unset()
Class flasher sudah kita buat, agar bisa digunakan kita panggil lewat [Link]
Kita akan jalankan sessionnya melalui halaman index yang paling luar yang ada di folder public
Berikutnya flash message akan kitam tampilkan di halaman index didalam folder siswa.
Tampilkan sebelum tombol tambah data siswa. Tambahkan row dengan lg-6
Maka didalam class row yang paling atas akan kita tampilkan flash messagenya. Cukup dengan
memanggil class [Link] yang methodnya static maka penulisannya ;
Kita akan set di controller [Link]. sebelum kita redirect kita set terlebih dahulu flash message
nya. Atur flashnya melalui method setflash, jika data berhasil ditambahkan maka parameternya,
berhasil, ditambahkan, dan gunakan succes agar tampilnya hijau.
Jika gagal maka parameternya gagal, ditambahkan, dan gunakan danger agar tampilnya merah.
Delete Data
Menambahkan fitur delete yang nantinya ada disebelah kanan fitur tombol detail. Dan nanti pada
saat kita klik tombol delete itu artinya kita juga akan mengirimkan data berupa id dari nasing-
masing siswa yang ada.
Yang pertama kita buka view index yang ada di dalam folder siswa
Copy paste tombol detail kemudian ubah menjadi tombol hapus, arahkan linknya ke
/student/hapus/
Hasil di browser
Mengatur jarak agar tidak terlalu rapat menggunakan atribut margin Left 1
Maka hasilnya
Tukar posisi menjadi detail hapus
Hasilnya di browser
Tambahkan url