
Generate Unique Slug di Laravel dengan Eloquent Sluggable Package
Laravel Unique Slug - Pada saat membangun situs web atau aplikasi, salah satu tantangan yang sering dihadapi adalah membuat URL yang ramah mesin pencari dan mudah diingat bagi user. URL yang clean dan deskriptif dapat meningkatkan SEO dan user experience secara keseluruhan. Dalam lingkungan Laravel, menghasilkan unique slug untuk judul atau nama entitas merupakan tugas yang umum dilakukan. Untungnya, ada solusi yang sederhana dan efektif untuk masalah ini: Eloquent-Sluggable package dari Cviebrock.
Apa itu Eloquent-Sluggable?
Eloquent-Sluggable adalah sebuah package Laravel yang dikembangkan oleh Colin Viebrock (cviebrock) yang memungkinkan kita dengan mudah menghasilkan unique slug dari column tertentu di model Eloquent kita. Slug adalah bagian dari URL yang berisi versi yang diubah dari teks asli, biasanya berisi karakter alfanumerik dan tanda hubung. Package ini akan menangani konversi teks title atau nama menjadi URL yang user friendly.
FYI. Di artikel ini saya akan melanjutkan project atau artikel yang pernah saya publish sebelumnya tentang pembahasan laravel 10 dan penggunakan sanctum package untuk membuat REST API di laarvel.
Generate Unique Slug
Untuk menggunakan paket Eloquent-Sluggable, kita dapat melakukan langkah-langkah berikut untuk mengintegrasikan paket ini ke dalam proyek Laravel:
Step 1: Instalasi Package
Buka terminal dan masuk ke direktori proyek Laravel. Kemudian, jalankan perintah berikut untuk menginstal paket Eloquent-Sluggable menggunakan Composer:
composer require cviebrock/eloquent-sluggable
Step 2: Config Model
Setelah selesai menginstal paket, kita harus menambahkan column yang akan menyimpan slug di tabel yang sesuai. Dalam contoh ini, mari kita anggap kita memiliki model Post
dan ingin menghasilkan slug untuk kolom title
. Buka file model Post
dan tambahkan penggunaan trait Sluggable
serta define property $sluggable
:
use Cviebrock\EloquentSluggable\Sluggable;
....
....
use HasFactory, Sluggable;
....
....
public function sluggable(): array
{
return [
'slug' => [
'source' => 'title'
]
];
}
Dalam contoh di atas, kita mendefinisikan bahwa slug akan dibangun atau digenerate dari kolom title
dan hasilnya akan disimpan di kolom slug
.
Oke, sekarang kita bisa menghapus static function booted
yang sudah kita define sebelumnya di model Post
seperti di bawah ini.
protected static function booted()
{
static::creating(function ($post) {
$post->slug = \Str::slug($post->title);
$latestSlug =
static::whereRaw("slug RLIKE '^{$post->slug}(-[0-9]*)?$'")
->latest('id')
->pluck('slug')
->first();
if ($latestSlug) {
$pieces = explode('-', $latestSlug);
$number = intval(end($pieces));
$post->slug .= '-' . ($number + 1);
}
});
static::updating(function ($post) {
$post->slug = \Str::slug($post->title);
$latestSlug =
static::whereRaw("slug RLIKE '^{$post->slug}(-[0-9]*)?$'")
->latest('id')
->pluck('slug')
->first();
if ($latestSlug) {
$pieces = explode('-', $latestSlug);
$number = intval(end($pieces));
$post->slug .= '-' . ($number + 1);
}
});
}
Kesimpulan
Eloquent-Sluggable package dari Cviebrock adalah package yang sangat berguna untuk menghasilkan slug URL yang user friendly dan unique di aplikasi Laravel kita. Dengan mengikuti langkah-langkah instalasi dan konfigurasi yang sederhana, kita dapat dengan mudah mengintegrasikan fitur ini ke dalam model Eloquent kita dan secara otomatis menghasilkan unique slug yang SEO friendly setiap kali kita membuat atau mengubah entitas.
Pastikan untuk selalu memeriksa dokumentasi resmi package ini untuk update dan informasi lebih lanjut tentang cara menggunakannya secara efektif dalam proyek Laravel teman-teman. Selamat mencoba! 🚀
Read Documentation: Eloquent Sluggable
- REST API Authentication dengan Laravel Sanctum
- REST API CRUD dengan Laravel Sanctum
- Generate Unique Slug di Laravel dengan Eloquent Sluggable Package
- Implementasi Request Validation di Laravel REST API
- Implementasi API Versioning di Laravel
- Membuat Admin Panel dengan Filament - Tutorial Lengkap untuk Pemula
- Tutorial : Menggunakan DD ( ) - Di Laravel
- Tutorial : Membuat API Resources Di Laravel 10
- Tutorial : Membuat-Model Dan Migration-Di Laravel 10
- Laravel 10
- Laravel Restful Api
- Tutorial: Membuat Eloquent Accessor Di Laravel 10
- Tutorial : Menampilkan Data dari Database Di Laravel 10
- Tutorial: Cara Memasukan Data Ke Dalam Database Di Laravel 10
- Tutorial: Menampilkan Detail Data Di Laravel 10
- Tutorial: Update Data Ke Dalam Database Di Laravel 10
- Tutorial: Membuat WhatsApp Menggunakan Laravel
- Laravel Midtrans Tutorial
- Sweet Alert Laravel 10
Last updated on April 21, 2025