RSS

Pembuatan Module Drupal Sederhana – 3 (Hook Menu)

22 Feb

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

 
 

Tags: , , , , ,

3 responses to “Pembuatan Module Drupal Sederhana – 3 (Hook Menu)

  1. nurjalih

    26 June 2013 at 08:32

    wah mantap pisan euy,,makasih pak ilmu nya

     
  2. nurjalih

    26 June 2013 at 13:07

    sangat bermanfaat pak

     

Monggo share dimari :D

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: