Sebelum melangkah lebih jauh lagi, ada baiknya saya membahas lebih lanjut mengenai hook menu. Hook menu ini sangat penting dan sangat fundamental untuk Drupal itu sendiri.
Prinsip yang digunakan pada hook menu ini adalah kesamaan pattern atau pola. Contoh yang dibuat kemarin:
<?php function guestbook_menu(){ $items['guestbook'] = array( 'title' => 'Guest Book', 'description' => 'Hello Guest Book', 'page callback' => 'guestbook_helloworld_form', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); return $items; }
Pada code di atas dapat kita lihat bahwa kita mendefinisikan suatu halaman baru bernama guestbook.
Contoh lain yg sedikit lebih kompleks:
<?php function guestbook_menu(){ $items['guestbook/hello'] = array( 'title' => 'Guest Book', 'description' => 'Hello Guest Book', 'page callback' => 'guestbook_helloworld_form', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); return $items; }
Nah pada code diatas kita mendefinisikan halaman baru dengan alamat guestbook/hello (atau kalau di url browser localhost/drupal7/guestbook/hello ). Halaman tersebut akan memanggil fungsi guestbook_helloworld_form
Nah bagaimana kalau kita membutuhkan suatu argumen atau suatu halaman yang sifatnya dinamis?
Mari kita lihat contoh berikutnya:
<?php function guestbook_menu(){ $items['guestbook/hello'] = array( 'title' => 'Guest Book', 'description' => 'Hello Guest Book', 'page callback' => 'guestbook_helloworld_form', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['guestbook/%/edit'] = array( 'title' => 'Guest Book', 'description' => 'Edit Guest Book', 'page callback' => 'guestbook_edit_form', 'page arguments' => array(1), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); return $items; }
Pada code hook menu diatas, kita mendefinisikan 2 halaman baru pada module guestbook yang kita buat. Yang pertama sama seperti contoh sebelumnya, sedangkan yang kedua memuat halaman yang bersifat dinamis dan mengirimkan argument/parameter untuk fungsi guestbook_edit_form
Mananya sih yang membuat halaman tersebut dinamis?
Mari perhatikan pola yang ada “guestbook/%/edit”
Ada tanda “%” pada path di hook menu tersebut. Tanda % bersifat dinamis, jadi apapun yang ada dalam pola tersebut bisa dipakai. Contohnya “guestbook/120/edit”, “guestbook/buku/edit” dll.
Apakah mulai ada gambaran?Pada contoh terakhir tadi angka 120 atau buku dapat menggantikan tanda “%” yang ada di path url tadi sehingga bersifat dinamis.
Biasanya tanda “%” ini digunakan untuk diisi ID atau suatu penanda dari halaman tersebut yang bisa dijadikan parameter atau argument untuk fungsi yang kita buat
Nah berikutnya, mari fokus pada “page arguments” => array(1)
array(1) menandakan bahwa kita mengirimkan argument untuk fungsi yang kita buat tadi (guestbook_edit_form) yang nilainya adalah value pertama dari url (dihitung dari nol).
Pusing?Santai dulu saja…Saya kasih contoh lain.
Contohnya:
“guestbook/%/edit”
Maka argument ke nol adalah “guestbook”, argument pertama adalah “%” yang sifatnya dinamis, dan argument kedua adalah “edit”
Jadi jika menggunakan contoh “guestbook/120/edit”
Maka argument nol adalah “guestbook”,
Argument pertama adalah “120”,
Dan argument kedua adalah “edit”
Contoh lain yang agak beda dan panjang “guestbook/buku/sejarah/delete”
Argument nol adalah “guestbook”,
Argument pertama adalah “buku”,
Argument kedua adalah “sejarah”,
Dan argument ketiga adalah “delete”
Nah bagaimana kalau pada path “guestbook/buku/12/delete” kita ingin mengirimkan 3 parameter sekaligus dalam fungsi?
Maka page arguments dapat ditulis demikian: “page arguments” => array(0,2,3)
Jadi argument yang dikirimkan ke fungsi yang didefinisikan di page callback adalah “guestbook”, “12”, dan “delete”
Bagaimana?
Asyik kan?
Semoga membantu memahami Framework Drupal
Terimakasih Banyak,
Salam,
Andrew Junior
wah mantap pisan euy,,makasih pak ilmu nya
smoga berguna 😀
sangat bermanfaat pak