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. 🙂
Cak Sobri mengatakan
Saya masih bingung ini om, saya baca berulang-ulang belum faham 😀
if ($this->CurrentAction == “A”)
sebenarnya A itu apa ?
Masino Sinaga mengatakan
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.
Cak Sobri mengatakan
Berarti tidak bisa dirubah alias rumus ? Kalo untuk halaman edit apa ada om ?
Masino Sinaga mengatakan
Untuk halaman Edit, nilainya: U yang merupakan singkatan dari Update.
Heru Dian Herlambang mengatakan
untuk bisa di arahkan ke master/detail edit setelah update record gimana mas misalnya
“masteredit.php?showdetail=detail&PRIMARY=xxx” ?
Masino Sinaga mengatakan
Mirip seperti yang dibahas di artikel atas, tapi nilai CurrentAction untuk update record adalah U.
Adhi mengatakan
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…
Masino Sinaga mengatakan
Tergantung Anda ingin mengubah URL itu di bagian mana. Apakah di item menu, di dalam halaman tertentu, atau setelah event tertentu yang terjadi?
Bayu mengatakan
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.
Bayu mengatakan
Itu kenapa ya Bang? Kalau saya hilangkan pageredirecting, failure message-nya muncul.
Apakah ada kondisi di pageredirecting atau gimana ya?
Masino Sinaga mengatakan
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.
Bayu mengatakan
Bang, Makasih banyak. Mangstaf. Sukses Bang.
$url = “…”;
$this->Page_Terminate($url);
liekin mengatakan
Jadi code nya apa Bang, jika false tetap keluar failure mesaage dan diredirect ke page lain (tidak kembali ke page edit tadi)
Masino Sinaga mengatakan
Kalau di PHPMaker 2020:
Masino Sinaga mengatakan
Jadi, pertanyaannya apa nih? Hehehe… 😉
Bayu mengatakan
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.
Masino Sinaga mengatakan
Sayangnya kode itu hanya menampilkan halamananda.php pada tab yang sama. Jadi, tidak bisa membuka di tab yang baru.
hanif mengatakan
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
Masino Sinaga mengatakan
Kalau pakai PHPMaker 2020, cukup tambahkan kode ini ke dalam server event Row_Inserted (tidak perlu menggunakan kode di atas):
bagus mengatakan
kalo buka menu langsung mode add data, bukan tabel list. bagaimana cara nya bang ? bisa seperti diataskah ? thanks
Masino Sinaga mengatakan
Bukanya dari mana? Klik dari item menu kah?
bagus mengatakan
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
Masino Sinaga mengatakan
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.
Eka Dalas Pangestu mengatakan
Kalo kita buat custom button agar bisa redirect ke halaman yang kita custom juga itu seperti apa yang pak masino ?
Terima Kaish
Masino Sinaga mengatakan
Bisa pakai link dengan class btn untuk tampilan button, lalu arahkan link-nya ke halaman tujuan.