Grouping di dalam select box adalah hal yang gampang ketika kita menggunakan codingan php biasa, tetapi kalau sudah masuk ke dalam codingan CakePHP kita harus banyak membaca documentation untuk teknik2nya, tickets jika ada yang pernah menanyakan hal yang sama dan tentu saja API agar kita tahu fungsi dari method yang akan kita pakai.
Jadi sekarang kita akan membuat sebuah grouping dalam select box seperti dalam gambar di bawah ini : [caption id=“” align=“alignnone” width=“217” caption=“CakePHP Group Select”][/caption]
Di dalam contoh diatas gwa menggunakan 3 buah table di antaranya table majors ( jurusan ), table faculties ( fakultas ) dan table levels ( untuk pembagian apakah dia D3/S1 ). Hal pertama yang harus kita lakukan adalah men-query isi table dari majors ( dalam hal ini gwa menggunakan ClassRegistry karena table majors tidak ada relation dengan controller gwa ) :
|
|
atau kalau punya relation / berada dalam controller sendiri
|
|
Kemudian kita akan menggabungkan hasil query tersebut dan menyusunnya menjadi array yang jika kita masukkan ke dalam form helper maka akan secara otomatis menjadi select box yang tergroup. Kita akan menggunakan bantuan Set::combine untuk melakukan hal tersebut. Berikut contoh codingannya :
|
|
untuk penjelasan parameternya dapat dilihat di API CakePHP : API CakePHP
sedikit penjelasan tentang parameter yang gwa gunakan yaitu :
$majorsCombine Nama variable penampung.
Set::combine Nama method yang kita gunakan.
$majors Sumber data kita
{n}.Major.id Path pertama atau biasanya nilai dari select box kita
array(‘%s - %s’,‘{n}.Level.name’, ‘{n}.Major.name’) Kalau ini path kedua yang berfungsi sebagai label dari isi select box kita, jika dilihat itu isinya ada level dan major jadi nanti keluarnya ( S1 - Teknik Informatika )
{n}.Faculty.name’ ini nama groupnya
Selanjutnya tinggal digunakan saja di viewnya seperti ini :
|
|
Penjelasannya kira-kira begini :
$form->select ini form helper yang kita gunakan
nama-form nama form helper yang kita gunakan
$majorsCombine sumber data
null,null,‘– Pilih Jurusan Pertama – parameter tambahan lagi
Semoga membantu, silakan dicoba.. kalau ga jalan, dicoba lagi, kalau ga jalan juga ya sudah terima nasih aja :D