Cara Atasi Halaman 404 Not Found Saat Menampilkan Postingan dengan Spesifik Kategori yang Menggunakan Spatie Translatable di Laravel
Spatie Laravel Translatable adalah salah satu package Laravel yang kita gunakan untuk multi language di mana kita menyimpan teks atau kata dalam berbagai bahasa dan menyimpannya di dalam database dalam bentuk array.
Spatie Laravel Translatable ini kemudian kita terapkan pada kategori, misalnya kita beri nama "news" dalam Bahasa Inggris (en), dan "berita" dalam Bahasa Indonesia (id). Sehingga nantinya array yang tersimpan di dalam database seperti berikut:
name: "{"en":"News","id":"Berita"}",
slug: "{"en":"news","id":"berita"}",
Permasalahan timbul ketika kita akan menampilkan semua postingan atau artikel dengan kategori "News" yang kita panggil dengan cara Route Model Binding.
Route::get('category/{category:slug}', [CategoryController::class,
'index'])->name('category_post.show');
Hasilnya akan menampilkan halaman Error 4040 Not Found. Saat dicek ternyata permasalahannya ada pada pemanggilan Model Category $category
Lalu bagaiman cara mengatasinya?
Caranya kita membuat file Service Provider baru dengan perintah artisan berikut
php artisan make:provider CategoryServiceProvider
Lau buka filenya di dalam folder app/Providers
dengan nama file
CategoryServiceProvider.php
Pada bagian method boot, isikan sebagai berikut:
public function boot(){
Route::bind('term', function ($value) {
return \App\Models\Category::where('slug', 'like', "%\"{$value}\"%")->firstOrFail();
});
}
Kemudian buka file app.php
yang berada dalam folder config, tambahkan pada bagian 'provider' => []
App\Providers\TranslatableServiceProvider::class,
Demikian, selamat mencoba.
Post a Comment