Jika di versi 2020 dan sebelumnya PHPMaker menyediakan server event untuk menentukan halaman default atau halaman pertama yang ditampilkan, dengan menulis kode melalui Server Events -> Other -> Index Page -> Page_Redirecting, maka sejak versi 2021 server event tersebut sudah dihapus dari dalam project PHPMaker.
Hal ini terjadi karena di versi 2020, kode untuk server event tersebut akan di-generate ke dalam halaman index.php, dan file ini bisa dipanggil secara langsung dari URL. Sedangkan di versi 2021, file index.php sudah tidak bisa lagi dipanggil secara langsung dari URL. Jika halaman index.php dipanggil secara langsung pada Aplikasi Web yang dihasilkan oleh PHPMaker 2021, maka akan menimbulkan error Route ‘index.php’ not found..
Penyebab file index.php tidak dapat dipanggil secara langsung dari URL adalah karena file ini berfungsi sebagai front-controller, dimana semua permintaan ditujukan kepada file ini. File ini akan dipanggil oleh app Slim (framework PHP yang digunakan oleh PHPMaker 2021).
Sebagai gantinya, kita sebagai Web Developer dapat mengoptimalkan setting Start page yang terdapat di menu/tab Generate. Atau, jika setting ini dikosongkan, maka PHPMaker akan menampilkan halaman yang memiliki setting Default pada table yang dipilih dari tab/pengaturan level Tables.
Jika pengaturan pada level Tables ini dikosongkan juga, maka PHPMaker akan otomatis menampilkan halaman List milik table yang berada pada urutan paling atas di panel Database pada project PHPMaker. Jika permission List untuk table tersebut tidak diberikan kepada level pengguna Anonymous, maka sistem akan mengembalikan pesan error yang berisi Anda tidak memiliki ijin untuk mengakses {namatable}, lalu sistem akan otomatis mengarahkan Pengguna ke halaman Login.
Semua yang kita bahas barusan adalah untuk halaman Default yang ditampilkan pada saat kondisi Pengguna belum login ke dalam Aplikasi Web. Dengan kata lain, hal ini berlaku untuk level Pengguna Anonymous dengan kode level -2.
Pertanyaan selanjutnya: Bagaimana menentukan halaman Default yang ditampilkan oleh sistem secara dinamis, jika Pengguna sudah berhasil login? Misalnya, halaman yang ditampilkan berbeda-beda untuk setiap level pengguna.
Untuk mengarahkan Pengguna ke halaman tertentu setelah berhasil login, maka di versi 2021 ini kita bisa menggunakan server event Page_Redirecting yang terdapat di bawah lokasi Server Events -> Other -> Login Page:
//if (IsLoggedIn()) { if (CurrentUserLevel() == "1") { $url = "orders/list"; } elseif (CurrentUserLevel() == "2") { $url = "products/list"; } //}
Dalam contoh kode di atas, kita menggunakan project demo yang sudah disediakan oleh PHPMaker. Pengguna dengan level 1 (Sales), akan otomatis diarahkan ke halaman List milik table orders setelah berhasil login. Sedangkan Pengguna dengan level 2 (Manager), akan diarahkan oleh sistem ke halaman List milik table products.
Perhatikanlah kode pada baris paling atas dan paling bawah. Kode tersebut kita tutup menjadi komentar. Artinya, pemeriksaan apakah si Pengguna sudah berhasil login tidak wajib dilakukan lagi, karena level Pengguna Sales (1) dan level Pengguna Manager (2) masing-masing tidak sama dengan level Pengguna Anonymous (-2).
Sampai di sini, kita sudah bisa menentukan halaman Default untuk level Pengguna Anonymous, dan level Pengguna lainnya jika sudah berhasil login. Pertanyaan selanjutnya, apakah kita bisa mengarahkan Pengguna ke halaman tertentu jika sudah berhasil logout?
Bukan PHPMaker namanya jika hal ini tidak bisa dilakukan dengan sangat mudah dan cepat, hehehe… 😉
Kita cukup menggunakan server event Page_Redirecting yang terdapat pada lokasi Server Events -> Other -> Logout Page:
if (CurrentUserLevel() == "1") { $url = "news"; } elseif (CurrentUserLevel() == "2") { $url = "home"; }
Kode yang terakhir ini artinya, untuk level Pengguna Sales (1), maka setelah berhasil logout, sistem akan mengarahkan ke halaman News. Sedangkan jika level Pengguna Manager (2) berhasil logout, maka sistem akan mengarahkan ke halaman Home.
Betapa mudahnya, bukan? Hanya dengan sedikit kode PHP itu saja, kita sudah bisa menerapkan business logic sesuai kebutuhan kita.
PHPMaker memang keren! 😉
iandelima mengatakan
Pak Masino,
Salam sukses sll, Pak
Izin tanya Pak, kalo seandainya ada error saat aplikasi di localhost dieksekusi, seperti ini {“statusCode”:404,”error”:{“class”:”text-warning”,”type”:”Not Found”,”description”:”The requested resource could not be found. Please verify the URI and try again.”}}
Error diatas itu gimana solusinya yaa Pak?
makasih Pak.
Masino Sinaga mengatakan
Silahkan langsung ke artikel ini ya: Cara Mengetahui Detail Error di Aplikasi Web yang Dihasilkan oleh PHPMaker 2021.