Seperti yang sudah dibahas di artikel terkait lainnya, kita sudah mengetahui perbedaan antara server event Page_Load dan Page_DataRendering, khususnya yang terkait dengan fungsi untuk menyembunyikan suatu Field di halaman List. Kita bisa menyembunyikan Field tertentu hanya di bagian tabel, tapi tetap menampilkannya di bagian Extended Search di bagian atas tabel tersebut.
Di artikel kali ini kita akan membahas dua buah server event yang sekilas mirip, tapi memiliki perbedaan yang cukup signifikan. Kedua server event itu adalah Page_Load dan Page_Render. Saya sebutkan terdapat perbedaan yang cukup signifikan, karena kedua server event ini memiliki urutan yang berbeda saat dipanggil oleh sistem, sehingga akan berdampak terhadap beberapa fungsi untuk mengambil nilai dari Database. Server event Page_Load dipanggil duluan daripada Page_Render.
Sekarang mari kita bahas satu per satu server event tersebut terlebih dulu.
Kalau melihat definisi dari menu Help di PHPMaker, maka server event Page_Load memiliki definisi sebagai berikut:
This event will be called after connecting to the database.
Artinya, server event Page_Load akan dipanggil setelah sistem berhasil terhubung ke Database. Karena server event ini dieksekusi sesaat setelah sistem berhasil terhubung ke Database, maka secara implisit, itu artinya server event ini sangat cocok digunakan untuk mengubah nilai pengaturan atau property dari sebuah Field. Seperti di artikel terdahulu yang disebutkan di atas tadi, kita bisa menggunakan server event ini untuk menyembunyikan suatu Field tertentu.
Meskipun di menu Help PHPMaker tidak ada penjelasan yang lebih detail mengenai server event Page_Load tersebut, di server event ini, sebenarnya sistem belum selesai mengambil atau memuat nilai yang terdapat pada Properties milik suatu Field. Itu artinya, kode seperti ini:
if ($this->ProductID->CurrentValue <> "") { // ... }
tidak berarti apa-apa. Artinya, kondisi pemeriksaan di blok if tadi tidak ada gunanya. Lalu pertanyaannya adalah, di server event yang mana sebaiknya kita bisa melakukan pemeriksaan seperti kode tadi? Nah, jawabannya adalah server event Page_Render. See? Sudah mulai kelihatan perbedaan antara kedua server event, bukan?
Sekarang mari kita simak dulu penjelasan dari server event Page_Render sesuai dengan yang tercantum di menu Help PHPMaker.
This event will be called before outputting HTML for the page. You can use this event to make some last minute changes to the page before it is outputted.
Artinya, server event Page_Render akan dipanggil sebelum sistem menampilkan output HTML untuk suatu halaman tertentu. Anda dapat menggunakan server event ini untuk membuat beberapa perubahan pada saat detik-detik terakhir sebelum halaman tadi ditampilkan di browser Pengguna.
Nah, itu artinya lagi, di server event ini sistem sudah selesai memuat nilai-nilai yang terdapat di Properties dari suatu Field yang kita inginkan. Dengan kata lain, kita bisa menggunakan server event Page_Render untuk memeriksa nilai di suatu Field seperti contoh kode di atas tadi.
Kode tersebut tentu tergantung dari konteks di halaman apa digunakan. Contoh, untuk halaman Edit, maka kita bisa menggunakan kode tersebut untuk memeriksa nilai dari field ProductID. Tapi, untuk di halaman List, kode tadi belum tentu bisa digunakan di server event Page_Render.
Pertanyaannya adalah, mengapa kita tidak bisa menggunakan kode tersebut di halaman List? Jawabannya, karena karakteristik halaman List yang menampilkan data ke dalam tabel atau List, sehingga dalam hal ini server event yang cocok digunakan adalah Row_Rendered atau ListOptions_Rendered.
Betapa nikmat dan mudahnya, bukan? 🙂
nurina mengatakan
saya baru di phpmaker ini dan sedang coba2. saya ingin tanya.
saya ada data spt ini:
tabel_data:
keyID
user
alamat
cabangID
tgl_pesan
pemesanan_barang
keteranganlain
activated
current_date
yang ingin saya tanyakan ttg filter, kl ingin memfilter tabel ada di tab table. table options /general/filter, nah kl saya ingin filter bbrp field kok tidak bisa ya pak?
saya ingin memfilter tampilan berdasarkan : cabangID, activated (Y/N) –> filter tampil data hanya Y saja, dan activated (filter tabel tampilan data berdasarkan data yg masuk hari ini saja yang tampil, bila ingin tampil data tanggal lain bisa dg search tanggal).
saya coba seperti ini difilter tabel options/general/filter:
“`act` = ‘Y’, `ew_CurrentDateTime()` = ‘”.$_GET[“ew_CurrentDateTime()”].”‘, `cabangID` = ‘”.$_GET[“cabangID”].”‘”
tapi hasilnya salah “Failed to execute SQL. Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use dst…”
bagaimana solusinya pak? terimakasih
nurina mengatakan
tambahan, sewaktu lookup tabel data juga terdapat filter, apa filter diphpmaker hanya bisa 1 filter saja pak? terimakasih
Masino Sinaga mengatakan
Anda seharusnya menggunakan AND (bukan karakter koma) untuk menggabungkan beberapa kriteria di dalam pengaturan Filter tersebut.
Yusuf mengatakan
Pak, saya develop PHPMaker di komputer saya dengan menggunakan SQL serv yang letaknya di server database. Pada saya running di komputer berjalan akan tetapi begitu source code saya pindahkan ke server applikasi aplikasi tidak muncul sama sekali dan tidak ada pesan error yang muncul. Mohon bantuannya mengapa hal ini terjadi
Masino Sinaga mengatakan
Aktifkan mode Debug di aplikasi web-nya untuk memeriksa pesan error. Pastikan juga error_reporting di file php.ini diaktifkan untuk memastikan apakah ada pesan error dari web server-nya.