Aplikasi Web yang dihasilkan oleh PHPMaker secara standar akan menggunakan karakter koma (,) sebagai karakter pemisah (separator). Biasanya karakter ini sering kita temukan pada Field yang lookup ke Table lain. Karena data yang ditampilkan berasal dari beberapa Field yang lookup ke Table lain tadi, maka untuk memisahkan nilai di antara Field-Field tersebut, sistem akan menggunakan karakter koma sebagai pemisah.
Kadang-kadang, kita sebagai Web Developer ingin menghilangkan karakter pemisah tadi. Pertanyaannya adalah, bagaimana caranya untuk menghilangkan karakter tersebut? Katakanlah pada table orders, kita ingin menghilangkan karakter koma yang terdapat pada field EmployeeID.
Contoh data yang mengandung karakter pemisah tadi adalah seperti ini: Masino, Sinaga. Dari contoh tadi, maka kata pertama diambil dari Field First_Name dan kata kedua diambil dari Field Last_Name yang lookup ke table employee. Setelah karakter pemisahnya dihilangkan, maka seharusnya tampilan data tadi menjadi: Masino Sinaga.
Ingin tahu solusinya? Hehe… ternyata sangat mudah, cepat, dan lagi-lagi menyenangkan. Kita tidak perlu memodifikasi file script yang sudah dibangkitkan oleh PHPMaker. Kita juga tidak perlu memodifikasi file template yang digunakan oleh PHPMaker. Cukup hanya menaruh kode berikut pada server event Row_Rendering yang lokasinya berada di bawah Server Events -> Table-Specific -> Common, sehingga kode selengkapnya menjadi seperti ini:
// Row Rendering event function Row_Rendering() { // Enter your code here $this->EmployeeID->DisplayValueSeparator = " "; }
Dari kode di atas, kita cukup hanya mengubah nilai property DisplayValueSeparator milik Field EmployeeID menjadi satu karakter string kosong. Hal ini untuk memastikan ada jarak di antara kedua nilai yang ada di Field tersebut.
Mungkin di antara Anda ada yang bertanya, mengapa kode tersebut tidak ditempatkan di server event Row_Rendered yang selama ini cukup populer kita gunakan? Alasannya sederhana, karena jika ditempatkan di server event Row_Rendered, maka karakter pemisah tadi tidak akan hilang.
Pertanyaan berikutnya, mengapa? Karena tujuannya kita akan menghilangkan karakter pemisah, maka harus ditaruh di server event yang akan dieksekusi ketika sistem sedang me-render data pada setiap baris. Itulah kenapa harus ditaruh di server event Row_Rendering.
Jika kita lihat lagi dari menu Help PHPMaker, dijelaskan bahwa server event ini akan dipanggil sebelum me-render (menerapkan pengaturan pada panel View Tag dan Edit Tag dari Fields Setup) pada sebuah record. Termasuk saat proses render itu sendiri berlangsung.
Selama ini memang server event Row_Rendering jarang dipakai. Di sinilah mulai semakin terkuak, perbedaan antara server event Row_Rendered dan Row_Rendering dari contoh kasus di atas.
Karena kita menggunakan pada server event Row_Rendering, maka kode di atas akan berlaku untuk semua halaman yang memanggil server event ini. Jika seandainya kita hanya ingin menghilangkan karakter pemisah tadi di halaman List saja, maka kita tidak perlu menaruhnya di server event tersebut, tapi cukup di server event ListOptions_Rendered saja.
Betapa PHPMaker sudah memikirkan hal-hal kecil, sepele, tapi sering kali kita butuhkan, dan yang paling penting adalah, menyediakan solusinya dengan mudah, cepat, dan menyenangkan. 🙂
Roby mengatakan
Kalau $this->KodeProduk->DisplayValueSeparator = array();
Untuk add ditempatkan dimana pak, saya udah coba di add/copy page -> page load kenapa nggak pengaruh ya
Masino Sinaga mengatakan
Apa tujuan Anda menugaskan array() ke property DisplayValueSeparator?
Roby mengatakan
Bila di lookup ada 3 display file hanya satu yang muncul di kolom yaitu field KodeProduk tadi…
contoh yg sy buat begini…
sy punya table order di dalamnya ada field kodeproduk,namaproduk,size dan jumlah di table tersebut field kodeproduk yang sy lookup dengan display file namaproduk,size dan jumlah dengan menggunakan lookup modal dialog. setelah yg dicari ketemu itu pasti muncul nama kodeproduk (namaproduk)(size)(jumlah) saya menggunakan $this->KodeProduk->DisplayValueSeparator = array(); dengan tujuan hanya nama kodeproduk saja yang ingin saya tampilkan di kolom setelah di select dari lookup tadi….trimakasih pak
Masino Sinaga mengatakan
Sudah dicoba? Bisa?
Roby mengatakan
Nggak bisa pak….kode itu saya tempatkan di add/copy page -> page load tetap muncul semu
Masino Sinaga mengatakan
Iya, memang seperti itu. Anda tidak bisa hanya menampilkan KodeProduk saja setelah memilih data dari field Lookup Table. Jadi, apa yang dipilih di bagian Display Field, maka itu juga yang akan ditampilkan pada form Add.
Roby mengatakan
gitu ya pak ok deh pak trimakasih banyak
Masino Sinaga mengatakan
Sama-sama. Sepertinya dulu saya pernah merespon topik seperti ini di forum diskusi PHPMaker: http://www.hkvforums.com/viewtopic.php?f=4&t=39622#p119286
Widodo mengatakan
Malam Pak,
mau nanya, kalau cara menghilangkan delimiter ribuan dari tabel lookup bagaimana ya Pak?
dengan kondisi format “field asal” yang saya lookup itu berformat currency.
mohon pencerahannya Pak
Widodo mengatakan
Maaf Pak sudah ketemu caranya.
sekali lagi maaf sudah merepotkan.
sukses buat Pak Masino
Masino Sinaga mengatakan
Sama-sama. 🙂
raffasya mengatakan
saya mencoba menghilangkan tanda koma antara kode dengan nama dari lookup table tapi masih muncul koma, apakah $this->EmployeeID->DisplayValueSeparator = ” “; dengan employeeID harus primary key atau harus membuat tabel korelasi, jadi saya ingin membuat ID yang merupakan kombinasi dari ID dan Nama dalam menu lookup tapi sapartor koma masih muncul terus..mohon pencerahan
raffasya mengatakan
apakah running di phpmaker 2018
raffasya mengatakan
apakah bisa digabung tanpa adanya spasi misal “masinosinaga”
Masino Sinaga mengatakan
Tinggal dirapatkan aja nilai separatornya, alias tanpa spasi. Jadi, nilainya “”.
Masino Sinaga mengatakan
Iya, berfungsi juga di PHPMaker 2018.
agusecc mengatakan
Mau Tanya Bang
Apakah bisa tanda bintang pada form bisa disembunyikan atau dihilangkan? bagaimana caranya? mohon pencerahan.
terimakasih.
Masino Sinaga mengatakan
Pastikan pilihan Required yang terdapat di pangaturan Fields pada project PHPMaker sudah dinonaktifkan, lalu generate ulang file script seperti biasa.