Pernahkah Anda sebagai Web Developer ingin mengarahkan (redirect) ke halaman tertentu dari suatu halaman di Aplikasi Web yang Anda bangun? Kadang-kadang, pasti ada kebutuhan untuk mengarahkan Pengguna ke halaman lain, atau bahkan tetap kembali halaman yang sama setelah suatu aktivitas baru saja dilakukan oleh Pengguna di sebuah halaman. Tergantung kepada kebutuhan atau business-logic yang ingin diterapkan.
Seperti yang kita ketahui, Aplikasi Web yang dihasilkan oleh PHPMaker secara standar akan me-redirect Pengguna ke halaman List setelah berhasil menambahkan data baru di halaman Add. Pertanyaannya, apakah kita sebagai Web Developer bisa menambahkan business-logic tertentu yang mengarahkan Pengguna kembali ke halaman yang sama daripada kembali ke halaman List?
Supaya lebih jelas, mari simak ilustrasi berikut. Katakanlah Pengguna A baru saja selesai menambah data di halaman Add. Pada kondisi yang standar, maka Pengguna tadi akan otomatis diarahkan ke halaman List setelah berhasil menambah data yang baru tadi. Jika Pengguna ingin menambah data baru lainnya, maka dia harus mengklik link Add untuk membuka atau kembali ke halaman tadi.
Kemudian, Anda sebagai Web Developer ingin menerapkan business-logic yang mengubah redirect tadi, dari semula ke halaman List, menjadi diarahkan kembali ke halaman yang sama, yaitu halaman Add setelah Pengguna berhasil menambah data baru. Tujuannya jelas, supaya Pengguna dapat langsung menambah data baru lainnya tanpa harus melakukan klik tambahan untuk membuka halaman Add di halaman List.
Kondisi itu bisa diatasi oleh PHPMaker dengan sangat mudah. PHPMaker sudah menyediakan sebuah server event yang bernama Page_Redirecting. Server event ini akan dipanggil sebelum mengarahkan ke halaman yang lain. Argumen dari server event ini adalah URL tujuan yang akan diarahkan.
Dari contoh di atas tadi, maka Anda sebagai Web Developer cukup hanya menambahkan kode berikut ke dalam server event Page_Redirecting yang terdapat di bawah lokasi Server Events -> Table-Specific -> Add/Copy Page:
// Page Redirecting event function Page_Redirecting(&$url) { // Example: //$url = "your URL"; if ($this->CurrentAction == "A") { $url = "ordersadd.php"; } }
Untuk memastikan bahwa Pengguna telah selesai menginput data baru di halaman Add tersebut, maka kita harus menambahkan pemeriksaan kondisi dengan memanggil member dari class Table yang bernama CurrentAction dan memastikan nilainya adalah A.
Jika pemeriksaan kondisi tersebut tidak kita tambahkan, maka akan mengakibatkan sistem selalu terjebak dengan looping ke halaman Add, sehingga menimbulkan error redirect yang tidak sempurna yang dikembalikan dari browser. Mengapa? Karena server event ini juga dipanggil ketika halaman Add telah selesai dimuat oleh sistem melalui method Page_Terminate milik class Table atau Page.
Dengan cara yang sama tersebut, maka Anda sebagai Web Developer dapat dengan mudahnya menambahkan kondisi tertentu di halaman lainnya sesuai dengan kebutuhan.
See? Betapa mudahnya kita sebagai Web Developer dapat menerapkan business-logic tertentu di Aplikasi Web yang dihasilkan oleh PHPMaker dengan sangat cepat. 🙂
Saya masih bingung ini om, saya baca berulang-ulang belum faham 😀
if ($this->CurrentAction == “A”)
sebenarnya A itu apa ?
Nilai A itu merupakan singkatan dari Add, yaitu semacam flag yang menandakan bahwa sebelumnya sudah terjadi proses penambahan data.
Pemeriksaan ini untuk memastikan bahwa sebelumnya sistem sudah berhasil menambahkan data baru, sehingga ketika halaman ordersadd.php tersebut di-submit dan dimuat ulang oleh sistem, maka dia tidak akan di-redirect ke halaman List, tapi tetap berada di halaman ordersadd.php.
Berarti tidak bisa dirubah alias rumus ? Kalo untuk halaman edit apa ada om ?
Untuk halaman Edit, nilainya: U yang merupakan singkatan dari Update.
untuk bisa di arahkan ke master/detail edit setelah update record gimana mas misalnya
“masteredit.php?showdetail=detail&PRIMARY=xxx” ?
Mirip seperti yang dibahas di artikel atas, tapi nilai CurrentAction untuk update record adalah U.
Pagi Pak Masino..
Mau nanya, saya mau redirect halaman master detail view (ex url: /receipt_detaillist.php?showmaster=receipt_header&fk_id=4 ) ke halaman export print (ex url: ‘receipt_detaillist.php?export=print’), di event manakah saya harus memasukkan event redirect halaman?
Dikarenakan kalau user harus ke halaman view dulu, terus baru klik print, trus klik print lagi sepertinya kurang efisien..
Terima kasih Pak…
Tergantung Anda ingin mengubah URL itu di bagian mana. Apakah di item menu, di dalam halaman tertentu, atau setelah event tertentu yang terjadi?
Halo Bang Masino,
Saya pakai pageredirecting
if ($this->CurrentAction == “A”) {
$url = “tr_processedit.php?showdetail=tr_process_detail&id=”.urlencode($this->id->CurrentValue);
}
Kemudian saya juga punya coding di Row_Inserting.
Jika ada kondisi salah maka return FALSE dan menampilkan Failure Message.
Nah, anehnya, jiga return FALSE, page tidak menampilkan failuremessage, melainkan langsung ke halaman List.
Makasih Bang.
Itu kenapa ya Bang? Kalau saya hilangkan pageredirecting, failure message-nya muncul.
Apakah ada kondisi di pageredirecting atau gimana ya?
Iya, seharusnya tidak perlu menggunakan PageRedirecting tadi. Cukup panggil methode terminate milik object Page di dalam server event Row_Inserted jika ingin me-redirect ke halaman lain setelah data berhasil ditambahkan.
Bang, Makasih banyak. Mangstaf. Sukses Bang.
$url = “…”;
$this->Page_Terminate($url);
Jadi code nya apa Bang, jika false tetap keluar failure mesaage dan diredirect ke page lain (tidak kembali ke page edit tadi)
Kalau di PHPMaker 2020:
Jadi, pertanyaannya apa nih? Hehehe… 😉
Bang Masino,
Saya bikin di Row_Inserted : $this->terminate(“halamananda.php”);
Itu running di current page.
Nah, kalau pada saat yang bersamaan (saat save), saya mau buka link di new tab, gimana codenya?
Saya udah coba nambahin : window.open(“halamananda.php”); malah error
Terima kasih.
Sayangnya kode itu hanya menampilkan halamananda.php pada tab yang sama. Jadi, tidak bisa membuka di tab yang baru.
pak masino, saya kan punya file dataadd.php nah mau saya setelah mensubmit data add itu langsung ke barangadd.php
jadi saya ketikkan begini
tetapi yang terjadi setelah menambahkan data malah kembali ke page yang dataadd.php
itu bagaimana ya pak menyelesaikannya? apakah code nya lain kalo ke file yang lain?
terimakasih
Kalau pakai PHPMaker 2020, cukup tambahkan kode ini ke dalam server event Row_Inserted (tidak perlu menggunakan kode di atas):
kalo buka menu langsung mode add data, bukan tabel list. bagaimana cara nya bang ? bisa seperti diataskah ? thanks
Bukanya dari mana? Klik dari item menu kah?
iya bang dari menu yang di kiri itu. biasa kan kalo normal langsung di klik tampil tabel list. nah maunya langsung tampil halaman add. thanks
Anda bisa menggunakan server event MenuItem_Adding.
Silahkan baca topik Server Events and Client Scripts dari menu Help PHPMaker untuk info dan contoh lebih lanjut.
Kalo kita buat custom button agar bisa redirect ke halaman yang kita custom juga itu seperti apa yang pak masino ?
Terima Kaish
Bisa pakai link dengan class btn untuk tampilan button, lalu arahkan link-nya ke halaman tujuan.