Pada awalnya awalnya saya membutuhkan kategori berjenjang yang mudah. Akhirnya saya ketemu dengan laravel-nestedset yang menurut saya sangat membantu sekali. Jadi case-nya seperti ini misal saya membuat kategori seperti ini
HP
- Samsung
- Iphone
BUKU
- Komik
- Humor
- Serem
- Romansa
- Tutorial
Nah misal saya membuat tabel produk, dan satu produk memiliki satu kategori, Maka akan sangat kesulitan apa bila saya ingin menampilkan semua produk yang ada dalam kategori BUKU,
Nah Package lazychaser/laravel-nestedset ini menjawab hal tersebut,, mungkin untuk pembuatannya temen - temen bisa menginstallnya sesuai github berikut
https://github.com/lazychaser/laravel-nestedset
Gak perlu lah saya menjelaskan cara install dan konfigurasinya karena didalam link diatas udah luengkaps bangetss penggunaanya. So disini saya akan membuat tutorial gimana kategori tersebut disajikan dengan apik menggunakan jstree, kira2 seperti ini penampakannya
Disini saya menggunakan component aja ya,, untuk apa itu component dalam laravel silahkan anda googling di tempat lain. Saya menggunakan component karena dengan mudah bisa di panggil di halaman yang lain.
Pertama untuk databasenya kita buat migrationnya seperti ini ya...
php artisan make:model Master/Category -m
Misal file modelnya saya taruh di folder master,,
Kedua isi migrationnya dengan ini, harus persis yaa.. soalnya ntar jstree nya gak jalan kalau gak persis
Ketiga buat dulu component kategori dengan cara :
php artisan make:component Kategori
So tercipta controller component kategori di folder App\View\Component\Kategori.php
Kemudian isikan file tersebut seperti ini :
So disini saya udah bikin model yang bernama category ya,, agar bisa nyambung dengan js tree maka
Category::get()->toTree(); ini lah jawabannya
Kemudian pada viewnya data tree tersebut kita tampilkan pada textarea yang saya hidden, kemudian dengan jQuery data dari textarea tersebut ditampilkan kedalam div dengan id jstree
Untuk viewnya ada pada resources/view/component/kategori.blade.php
Berikut isinya :
Tuh terlihat text areanya aku display none,, kemudian pada javascriptnya data pada textarea tersebut dijadikan jstree pada div. Untuk Jquery itu saya disable/komentar karena di template yang saya gunakan udah ada jquerynya,, kalau saya aktifkan ntar bentrok
Okkay sekarang kita panggil component tersebut pada halaman view,, tentunya karena ini component maka bisa dipanggil dimana aja dengan cara hanya menginputkan kode ini
So pertanyaanya gimana ya,, saat kita klik kategori tersebut maka menampilkan data yang sesuai kategori tersebut ? jawabannya adalah dengan menggunakan javascript,, disini saya paka jquery karena simple banget scriptnya
Maka saat jstree di klik di jquery kan pakai onchanged dan kita redirect deh ke halaman yang kita butuhkan berdasarkan id kategori tersebut.
Kalau ada yg belum paham silahkan bertanya yaa,, Insya Allah akan saya jawab