Di artikel saya sebelumnya, kita sudah mengetahui bahwa betapa mudahnya menyembunyikan Item Menu di Aplikasi Web yang dibuat dengan PHPMaker. Kita cukup hanya menulis sedikit kode saja dari dalam aplikasi PHPMaker pada bagian server event MenuItem_Adding. Artinya, kita tidak perlu menulis kode di file script yang sudah di-generate oleh PHPMaker. Kita juga tidak perlu bersusah payah mengkostumais file Template PHPMaker. Semuanya dapat dilakukan dengan sangat mudah dan cepat hanya dari dalam project PHPMaker.
Kemampuan untuk menyembunyikan Item Menu tadi tentu saja belum lengkap jika tidak disertai dengan kemampuan tambahan lainnya yang terkait dengan pemanipulasian Menu di Aplikasi Web. Di antaranya, bagaimana cara menambahkan Item Menu baru sesuai keinginan kita saat Aplikasi Web dimuat ke browser, bagaimana cara memindahkan Item Menu tertentu ke posisi yang diinginkan, bagaimana cara menghilangkan semua Item Menu, dan lain sebagainya. Semua kemampuan tambahan itu bisa diatasi dengan sangat mudah oleh PHPMaker. Penasaran bagaimana caranya?
PHPMaker sudah menyediakan server event yang bernama Menu_Rendering untuk memanipulasi Menu di Aplikasi Web yang dihasilkan olehnya. Lokasi server event ini berada di level yang sama dengan lokasi server event MenuItem_Adding yang sebelumnya sudah kita bahas, yaitu dari: Server Events -> Global -> All Pages pada project PHPMaker. Sesuai dengan namanya, server event Menu_Rendering akan dieksekusi saat Menu sedang di-render atau ditampilkan output-nya ke browser Pengguna.
Server event Menu_Rendering dijalankan setelah server event MenuItem_Adding selesai dijalankan.
Anda bisa membuktikan hal ini dengan cara menambahkan kode berikut ke dalam server event Menu_Rendering:
var_dump($Menu); // untuk mengetahui property yang dimiliki object $Menu
kemudian tambahkan juga kode berikut ke dalam server event MenuItem_Adding:
var_dump($Item); // untuk mengetahui property yang dimiliki object $Item
lalu generate ulang file script dengan PHPMaker, dan terakhir jalankan Aplikasi Web Anda di browser.
Sekedar untuk menyegarkan ingatan kembali, server event di PHPMaker sebenarnya adalah function dalam bahasa PHP yang dijalankan di sisi server. Itulah sebabnya disebut dengan server event, yaitu event yang dijalankan di sisi server. Server event Menu_Rendering sama artinya dengan function Menu_Rendering. Function ini memiliki satu parameter, yaitu $Menu. Artinya, informasi Menu secara keseluruhan dilewatkan ke event ini sebagai sebuah instansiasi dari object (class) cMenu. Anda dapat mengetahui property apa saja yang dimiliki oleh object Menu tadi dari kode var_dump($Menu); di atas tadi.
Sama seperti server event MenuItem_Adding, server event Menu_Rendering juga merupakan function atau event yang sifatnya global. Artinya, dia akan selalu dipanggil setiap kali Aplikasi Web ditampilkan ke browser Pengguna.
Berikut ini beberapa contoh penggunaan kode pada server event Menu_Rendering.
Ini adalah contoh kode untuk menambahkan Item Menu baru, lalu menaruh Item Menu tersebut pada posisi ketiga di menu induk/root, dan hanya berlaku untuk Pengguna yang sudah berhasil login ke Aplikasi Web:
function Menu_Rendering(&$Menu) { if ($Menu->IsRoot) { // pastikan ini hanya untuk menu induk/root $Menu->AddMenuItem(10000, "MyMenuText", "mypage.php", -1, "", IsLoggedIn()); // tambahkan Item Menu baru $Menu->MoveItem("MyMenuText", 2); // pindahkan ke posisi ketiga (indeks ke-2 dalam array berbasis 0) } }
Dalam contoh tersebut, dilakukan pemeriksaan kondisi terlebih dulu apakah status menu tersebut adalah Root atau menu induk/utama dengan menggunakan property IsRoot, dan jika memenuhi syarat, maka tambahkan Item Menu yang baru menggunakan method AddMenuItem, kemudian memindahkan Item Menu yang baru tadi menggunakan method MoveItem.
Method AddMenuItem memiliki enam parameter. Yang pertama adalah ID dari Item Menu yang ditambahkan, yaitu 10000 (harus unik, tidak boleh sama dengan ID milik Item Menu lainnya). Parameter kedua merupakan teks dari Item Menu tadi, yaitu MyMenuText. Parameter yang ketiga adalah URL dari Item Menu, yaitu mypage.php. Parameter yang keempat nilainya -1, yang artinya Item Menu tersebut merupakan parent menu atau menu induk. Selanjutnya parameter kelima string kosong “”, yaitu source dari Item Menu; yang dalam hal ini tidak terlalu berpengaruh untuk apa gunanya. Sedangkan parameter yang terakhir atau yang keenam bernilai IsLoggedIn(), yaitu function global di PHPMaker untuk memeriksa status Pengguna apakah benar sedang dalam posisi sudah berhasil login.
Method MoveItem memiliki dua parameter. Parameter pertama adalah teks dari Item Menu yang akan dipindahkan, yaitu MyMenuText. Sedangkan parameter kedua adalah lokasi baru dari Item Menu yang dipindahkan, yaitu 2, yang artinya posisi menu yang baru tadi akan berada di urutan ketiga dari kiri (jika menu Horizontal) atau ketiga dari atas (jika menu Vertical). Mengapa kita menggunakan nilai 2 dan bukan 3? Karena kita menggunakan indeks array berbasis 0. Artinya, indeks 0 adalah element yang pertama. Berarti indeks yang ke-2 adalah elemen yang ketiga.
Oke, sampai di sini saya yakin Anda sudah memahami fungsi dari server event Menu_Rendering. Sekarang mari kita melihat contoh yang lainnya supaya semakin lebih mengerti lagi, sekaligus memperkenalkan method lain untuk menghapus semua Item Menu.
Di kode berikut ditunjukkan bahwa betapa mudahnya kita menghapus semua Item Menu lalu selanjutnya menambahkan dua Item Menu baru sesuai yang kita inginkan. Dengan kata lain, kode ini bermanfaat untuk menggunakan Menu buatan kita sendiri daripada menggunakan Menu yang sudah terdefinisi dari menu Tools -> Menu Editor dalam project PHPMaker Anda:
function Menu_Rendering(&$Menu) { if ($Menu->IsRoot) { // cek apakah menu induk $Menu->Clear(); // hapus semua item menu, cukup dari induknya saja! $Menu->AddMenuItem(1, "MyMenuText1", "mypage1.php"); // tambahkan item menu baru pertama $Menu->AddMenuItem(2, "MyMenuText2", "mypage2.php"); // tambahkan item menu baru kedua } }
Dengan menggunakan Menu_Rendering, maka Anda sebagai Web Developer dapat memanipulasi Menu di Aplikasi Web yang Anda bangun dengan sangat mudah dan cepat menggunakan PHPMaker. Jika di Aplikasi Web Anda ada kebutuhan untuk mengubah Item Menu tertentu, maka Anda dapat menyembunyikan Item Menu tersebut lalu menambahkan Item Menu yang baru. Itu artinya Anda dapat menggunakan kombinasi dari kedua server event MenuItem_Adding dan Menu_Rendering. Atau bahkan jika Anda ingin menggunakan Item Menu Anda sendiri yang misalnya disimpan di suatu tabel di database Anda, maka Anda bisa menggunakan kode seperti yang terdapat di contoh yang kedua tadi.
Luar biasa memang PHPMaker! Betapa semakin mudah dan nikmatnya Anda sekarang bekerja di bidang Web Development dengan menggunakan PHPMaker… 🙂
Jovanito mengatakan
mau tanya cara memperbarui nilai bidang dari bidang lainyalewat client side events gmana yah