Di tulisan sebelumnya kita sudah membahas bagaimana cara menambahan kode lewat fitur Custom Attribute dari bagian Fields setup. Cara ini memiliki keterbatasan karena jika ada kondisi percabangan seperti if … elseif … else … maka akan cukup rumit menuliskannya.
Sering kali business logic yang ingin diimplementasikan mengharuskan kita untuk menambahkan beberapa kondisi sebelum menambahkan kode di bagian Custom Attribute tersebut. Kalau sudah begini, maka pemakaian server event sudah menjadi kebutuhan.
Di samping karena lebih nyaman menulis kodenya, juga kita lebih mudah memahami business-logic yang kita tambahkan melalui server event. Termasuk dengan alasan jika kita ingin menambahkan komentar untuk menjelaskan arti dari kode yang kita tulis tersebut.
Untungnya PHPMaker sudah menyediakan server event Row_Rendered yang bisa kita gunakan untuk menambahkan Custom Attribute pada Field yang kita inginkan. Kita dapat menggunakan property EditAttrs milik object Field yang bertalian.
Jika Anda sudah menjadi member di situs ILovePHPMaker.com, maka Anda dapat melihat contoh project yang menerapkan pemakaian Custom Attribute lewat server event Row_Rendered, yaitu Stock Inventory Management – PHPMaker 2021 Project.
Berikut ini cuplikan kode di server event tersebut:
$this->Total_Amount->EditAttrs["onkeyup"] = "ew.vars.GetAmountTotal();ew.vars.GetAmountTotalFinal();"; $this->Final_Total_Amount->EditAttrs["onkeyup"] = "ew.vars.ValidateFinalTotalAmount();ew.vars.GetAmountTotalFinal();"; $this->Final_Total_Amount->EditAttrs["onclick"] = "ew.vars.ValidateFinalTotalAmount();ew.vars.GetAmountTotalFinal();"; $this->Total_Payment->EditAttrs["onkeyup"] = "ew.vars.ValidateTotalPayment();ew.vars.GetBalanceTotalFinal();"; $this->Total_Payment->EditAttrs["onclick"] = "ew.vars.ValidateTotalPayment();ew.vars.GetBalanceTotalFinal();"; $this->Total_Balance->EditAttrs["onkeyup"] = "ew.vars.GetAmountTotalFinal();ew.vars.GetBalanceTotalFinal()"; $this->Total_Balance->EditAttrs["onclick"] = "ew.vars.GetAmountTotalFinal();ew.vars.GetBalanceTotalFinal()"; ...
Contoh kode di server event Row_Rendered tersebut menggunakan Custom Attribute yang terdapat di panel Edit Tag, yang bisa kita kenali dari property EditAttrs. Dengan kata lain, kode ini akan diterapkan pada halaman Add dan Edit dari table yang bertalian.
Custom Attribute yang biasanya akan sering kita gunakan di form Add atau Edit adalah onkeyup dan onclick. Artinya, kita menambahkan attribute ke dalam control Textbox yang akan mendeteksi saat Pengguna Akhir mengetik data atau mengklik control Textbox.
Saat Aplikasi Web di-render di browser, maka kode di atas tadi akan ditambahkan menjadi Attribute pada Field yang bertalian. Dengan cara ini, kita tidak perlu mengubah kode di file script yang sudah dihasilkan oleh PHPMaker. Semuanya cukup dilakukan dari dalam project PHPMaker.
Adapun field-field yang menggunakan Custom Attribute pada contoh kode tersebut adalah Total_Amount, Final_Total_Amount, Total_Payment, dan Total_Balance.
Secara umum, kode di atas ingin mengatakan kepada sistem, saat Pengguna Akhir mengetikkan data angka pada field yang bertalian, maka sistem akan memanggil fungsi Javascript yang sebelumnya sudah kita definisikan di bagian Global dari Client Scripts.
Fungsi-fungsi Javascript yang dipanggil pada kode di atas, sepintas bita kita kenali dari namanya, seperti ValidateTotalPayment, yaitu berfungsi untuk melakukan validasi total pembayaran, dan juga GetAmountTotalFinal untuk menghitung jumlah total pembayaran akhir. Karena bersifat global, kita menggunakan variable global Javascript di PHPMaker yang diawali dengan ew.vars.
Meskipun dalam contoh kode di atas kita tidak menggunakan kode percabangan if … else …, kita masih tetap dapat menambahkan kondisi ini jika suatu saat dibutuhkan.
Betapa fleksibelnya PHPMaker, bukan? 😉
Tinggalkan Balasan