Aplikasi Web yang dihasilkan oleh PHPMaker secara standar akan mengarahkan Pengguna ke halaman List pertama kali. Halaman List adalah halaman yang terdiri dari tabel untuk menampilkan kumpulan Record dari sebuah table. Di halaman ini juga memiliki link ke halaman lainnya, seperti Add, Edit, Update, Delete, Search, atau Export Data.
Ini merupakan ciri khas dari sebuah Aplikasi Web. Sama halnya dengan karakteristik di PHPMaker, bahwa pusat halaman dari sebuah table yang dihasilkan adalah halaman List. Hal ini ditandai dengan link ke halaman List pada item Menu yang dihasilkan melalui Menu Editor di PHPMaker. Nilai URL pada Menu Editor pun dibuat dalam keadaan disabled, atau tidak dapat diubah oleh Pengguna.
Suatu ketika, Anda sebagai Web Developer dituntut untuk tidak langsung mengarahkan Pengguna ke halaman List. Apalagi jika fokus halaman yang ingin ditampilkan ke Pengguna adalah Form Pencarian, maka Anda dituntut untuk dapat mengarahkan Pengguna ke halaman Pencarian Lanjutan (Advanced Search), sekalipun Pengguna mengklik menu yang dihasilkan oleh PHPMaker menunjuk ke halaman List.
Sistem baru akan menampilkan halaman List setelah Pengguna melakukan pencarian data dari halaman Pencarian Lanjutan. Jika Pengguna mereset hasil pencarian, maka sistem akan mengarahkan kembali Pengguna ke halaman Pencarian Lanjutan. Demikian seterusnya keterkaitan antara kedua halaman ini.
Business-logic seperti ini biasanya sering digunakan jika kita ingin mempersyaratkan Pengguna dapat melihat data setelah melakukan proses pencarian data. Form atau halaman Pencarian Lanjutan dibuat sebagai halaman yang pertama kali dikunjungi oleh Pengguna. Baik Record yang dicari ditemukan ataupun tidak, maka Pengguna baru diarahkan ke halaman List.
Pertanyaannya adalah, bagaimana caranya kita sebagai Web Developer mengubah redirect dari halaman List ke halaman Pencarian Lanjutan? Di saat yang sama, kita juga harus menangani kemungkinan Pengguna menampilkan halaman List setelah Pengguna melakukan pencarian data. Hm, pertanyaan yang bagus! Jawabannya pun bagus! Mengapa? Karena PHPMaker sudah mengantisipasi business-logic tersebut, dengan menyediakan server event yang bernama Page_Redirecting. Server event yang kita maksud ini berada di bawah Server Events -> Table-Specific -> List Page.
Katakanlah kita akan menerapkan hal ini pada table suppliers, maka solusinya cukup dengan menambahkan kode PHP berikut ke dalam server event Page_Redirecting sehingga kode selengkapnya menjadi seperti ini:
// Page Redirecting event function Page_Redirecting(&$url) { // Example: //$url = "your URL"; if (!isset($_SESSION['tbl_suppliers_views']) || $_GET["cmd"]=="reset") { $_SESSION['tbl_suppliers_views']=0; } $_SESSION['tbl_suppliers_views']=$_SESSION['tbl_suppliers_views']+1; if ($_SESSION['tbl_suppliers_views']==1 || $_GET["cmd"]=="reset" || $this->SearchWhere=="") { $url = "supplierssrch.php"; } }
Seperti yang terlihat dari kode di atas, kita menggunakan session variable yang misalnya kita sebut dengan tbl_suppliers_view. Fungsinya sebagai counter, untuk menandakan batas mulai mengarahkan Pengguna ke halaman Pencarian Lanjutan.
Kabar baiknya adalah, jika Anda menggunakan Masino Extensions, maka di setiap table yang di-generate oleh PHPMaker sudah dilengkapi dengan counter seperti di atas, dengan format nama table_{namatable}_views. Sengaja saya bedakan prefix-nya dengan kode di atas yang menggunakan tbl_.
Mari kita kembali lagi ke kode di atas. Nilai awal dari session variable tersebut kita set dengan nol jika sistem belum membuatnya atau jika Pengguna mereset hasil pencarian dengan mengklik tombol Reset di halaman List. Setelah itu, counter ditambahkan dengan nilai satu.
Sistem memeriksa kembali jika nilainya sama dengan satu, atau jika Pengguna mereset hasil pencarian, atau jika kriteria pada property SearchWhere pada object Table mengandung string kosong, maka sistem akan mengarahkan Pengguna ke halaman Pencarian Lanjutan.
Dengan teknik seperti ini, maka Pengguna masih bisa mem-browse hasil pencarian ke halaman berikutnya atau halaman sebelumnya pada halaman List yang ditampilkan setelah proses pencarian mengembalikan Record. Dari halaman List tersebut, Pengguna juga dapat melakukan aktivitas lainnya seperti untuk menambah, mengubah, menghapus, atau bahkan melakukan pencarian data.
Bayangkanlah jika business-logic ini kita terapkan pada Aplikasi Web yang dibangun dengan cara manual, berapa lama resource (waktu, tenaga, ketelitian, dan lain sebagainya) yang Anda butuhkan?
Betapa PHPMaker dapat membantu tugas Anda, sehingga Anda bisa tetap fokus untuk mengimplementasikan business-process sekompleks apapun. Perhatikanlah kembali kode di atas, hanya dengan tujuh baris kode saja, kita sudah bisa menerapkan business-logic tadi. Selebihnya untuk urusan teknis dan tetek-bengek lainnya, kita serahkan saja kepada PHPMaker. Hohoho!
PHPMaker memang sungguh powerful, flexible, dan smart. Sampai saat ini belum ada tools sejenis lainnya yang menyamai atau bahkan melebihi kemampuan, kehebatan, fleksibilitas, dan kecerdikan yang dimiliki oleh PHPMaker. 😀
Edi Effendi mengatakan
Yth. Pak Masino
Menyinggung penambahan link pada halaman List, saya menggunakan perintah sebagai contoh adalah sbb:
dengan perintah tsb, saya tidak bisa menampilkan comment, misal PDF, juga icon nya tidak seragam dgn bawaan PHPMaker yaitu warna abu abu.
Bagaimana caranya agar comment/keterangannya muncul dan bisa menggunakan icon bawaan PHPMaker?
Pertanyaan kedua, pada Halaman Master/Detail, pada baris detailnya saya ingin menggunakan perintah seperti tsb diatas, bagaimana caranya ?
Mohon pencerahannya!
salam
Edi
Masino Sinaga mengatakan
Sintaks di atas masih salah. Silahkan cek ulang lagi penulisan tag a href yang sebenarnya. Anda juga bisa melihat contoh code yang di-generate oleh PHPMaker mengenai link untuk Export to PDF.
Menjawab pertanyaan yang kedua, hal itu bisa dilakukan dengan cara yang sama, cukup melalui halaman List dari tabel detail-nya.