Di artikel sebelumnya kita sudah membahas bagaimana cara menyisipkan kode saat baris Record akan atau sedang ditampilkan ke Aplikasi Web yang di-generate oleh PHPMaker dengan menggunakan server event Row_Rendering. Di artikel yang ini kita akan membahas bagaimana cara memanipulasi Record setelah baris Record sudah selesai di-render atau ditampilkan dengan menggunakan server event Row_Rendered.
Lokasi dari server event Row_Rendered berada di bawah Server Events -> Table-Specific -> Common di dalam project PHPMaker Anda. Pastikan sebelumnya Anda sudah memilih salah satu Table yang Anda inginkan dari panel Database di sebelah kiri dari project PHPMaker Anda, untuk memastikan Anda menambahkan kode di server event pada Table yang tepat.
Server event Row_Rendered akan dipanggil setelah me-render atau mengeluarkan sebuah Record. Hal ini berguna untuk memformat tampilan sesuai dengan kondisi tertentu. Anda sebagai Web Developer dapat melakukan banyak hal di dalam server event ini, seperti misalnya mengganti warna huruf, mengganti style atau gaya huruf, mengganti warna latar belakang (background) huruf, warna latar belakang cell, dan masih banyak lagi. Semuanya dapat mudah dilakukan dengan mengganti nilai properties dari class Table atau Field di event yang sesuai dengan nilai field.
Class Table memiliki property RowAttrs yang merupakan array dari atribut HTML untuk baris di tabel. Class Field memiliki properties CellAttrs, ViewAttrs, dan EditAttrs untuk cell Table, View Tag, dan Edit Tag dari masing-masing Field. Kunci dari array ini haruslah merupakan atribut HTML yang valid untuk tag HTML. Selalu gunakan huruf kecil untuk kuncinya. Nilai attribute akan dikeluarkan sebagai atribut yang diapit dengan petik ganda. Jadi, jika Anda memiliki karakter petik ganda di dalam nilai tersebut, cobalah menggunakan petik tunggal sedapat mungkin, atau gunakan
"""
Untuk melihat properties dari class Field untuk proses development atau debugging, Anda dapat menggunakan function PHP yang bernama var_dump di dalam server event Row_Rendered:
var_dump($this->RowAttrs); var_dump($this->Trademark); var_dump($this->Trademark->CellAttrs); var_dump($this->Trademark->EditAttrs); var_dump($this->Trademark->ViewAttrs);
Klik node Cars di panel Database, pilih [Server Events/Client Scripts], dan klik [Table Specific] – > [Common] – > server event [Row_Rendered]. Standar kode Row_Rendered ditampilkan seperti berikut:
function Row_Rendered() { // Ganti warna baris di halaman List if ($this->Trademark->ViewValue == "BMW") { $this->RowAttrs["style"] = "color: red; background-color: #ccffcc"; } // Ganti warna cell if ($this->Cyl->CurrentValue == 4) { $this->Cyl->CellAttrs["style"] = "background-color: #ffcccc"; } elseif ($this->Cyl->CurrentValue == 6) { $this->Cyl->CellAttrs["style"] = "background-color: #ffcc99"; } elseif ($this->Cyl->CurrentValue == 8) { $this->Cyl->CellAttrs["style"] = "background-color: #ffccff"; } // Ganti style text if ($this->Category->CurrentValue == "SPORTS") { $this->Category->ViewAttrs["style"] = "color: #00cc00; font-weight: bold; background-color: #ffff99"; } }
Saya sarankan agar Anda banyak berlatih dengan cara mengekspos properties yang terdapat di server event ini supaya dapat mengoptimalkannya di Aplikasi Web yang Anda bangun dengan PHPMaker.
Luar biasa memang kehebatan dan kefleksibelan yang sudah disediakan oleh PHPMaker. 🙂
Slavan mengatakan
Bagaimana cara disable highlight pada baris pada tampilan list view ? Saya berpendapat bahwa $this->RowAttrs bisa akses class .ew-table-highlight-row . bagaimana syntaxnya saya mencari dokumentasi $this->RowAttrs tidak ketemu. Terima kasih.
Masino Sinaga mengatakan
Coba ketikkan kode ini ke dalam server event Row_Rendered, untuk mengekspos property dari object tersebut:
Slavan mengatakan
Hasil dari var_dump($this->RowAttrs); adalah sebagai berikut : object(PHPMaker2020\web_project\Attributes)#237 (1) { [“container”:”PHPMaker2020\web_project\Attributes”:private]=> array(3) { [“data-rowindex”]=> int(1) [“id”]=> string(12) “r1_workorder” [“data-rowtype”]=> int(1) } }
Warna pada tabel di list menghasilkan warna mati dengan warna highlight (saat pointer mouse hover ke tabel). Oleh karena itu, saya inign menon-aktifkan highlight, tapi tidak ketemu caranya sehingga akhirnya solusi yang saya gunakan highlight saya ganti ke warna hijau dan textcolor hitam.
Kalau boleh tahu selain $this->RowAttrs; , $this->; $this->->CellAttrs) , $this->ListOptions->Items[] ada fungsi apa lagi ? Dokumentasi lengkap bisa didapatkan dimana ? Saya sudah mencari-cari dengan keyword $this->RowAttrs[“style”] javascript , $this->RowAttrs[“style”] php, $this->RowAttrs[“style”] jquery , $this->RowAttrs[“style”] phpgrip tidak mendapatkan dokumentasi. Terima kasih Pak Masino Sinaga.
Masino Sinaga mengatakan
Kalau highlight itu memang sudah bawaan dari css table-nya. Atau, kalau ingin mengubah warnanya, bisa dari dalam project PHPMaker, lompat ke menu HTML -> Theme -> Table body (List page) -> Highlighted row color.
O iya, kalau di Row_Rendered, kita bisa juga mengekspos property dari setiap object yang diinginkan.
Contoh:
Jika ingin mengekspos property dari object Page yang bertalian, gunakan kode ini:
Jika ingin mengekspos property dari object suatu Field, gunakan kode ini:
Slavan mengatakan
wah, gk kepikir klu bisa begini var_dump($this);
Dan ada banyak selain RowAttrs, CellAttrs, ListOptions , ButtonGroupName , ScriptId, edit, PageHeader dan lain. Kira2 dokumentasi dari fungsi2 tersebut ada gk y ? RowAttrs bisa untuk apa saja, ScriptId bisa untuk apa saja dll. Terima kasih.
Masino Sinaga mengatakan
Dokumentasi secara khusus untuk setiap property tidak ada, tapi sebagian besar sudah dijelaskan melalui beberapa contoh kode di topik Server Events and Client Scripts pada menu Help PHPMaker.
Slavan mengatakan
Apakah bisa menampilkan secara list data dari tabel lain saat view suatu data dari list ? Tabel kedua ada field yang berisi id primary key dari tabel pertama. Saat suatu data dari tabel pertama di halaman list di klik tombol view (yang kaca pembesar) tampil data satu baris yang tabel pertama tapi juga sekaligus beberapa data / satu data dari tabel kedua yang memiliki id primary tabel pertama, dalam bentuk tabel juga.Saya cari tutorial http://www.hkvforums.com/viewtopic.php?f=4&t=39894 , tdak bisa di PHPMaker 2017. Mungkin PHPMaker 2020 bisa. Apakah harus dengan view ?
Masino Sinaga mengatakan
Kalau relasi kedua table sebagai Master/Detail, seharusnya bisa.
Slavan mengatakan
Sudah bisa sesuai harapan. Saya mendapatkan tutorial ini https://phpmaker.dev/doc/masterdetail.htm
Sekali lagi, terima kasih Pak Masino Sinaga