Membuat Slug di Laravel.Apa itu slug? Slug sendiri adalah bagian dari URL/Permalink Website yang merujuk pada sebuah konten secara spesifik.Slug berada di bagian belakang dari permalink,setelah nama domain anda.Kalau biasanya temen-teman buat detail data masih dengan angka seperti dibawah ini.
https://medanincode.com/post/ci4/2/
Dimana 2 adalah id dari si data,ini kurang ramah SEO Friendly,kita akan merubah menjadi seperti dibawah ini agar lebih SEO Friendly.
https://medanincode.com/post/ci4/passing-data-controller-ke-view-di-codeigniter-4/
Str::Slug
Cara paling mudah adalah menggunakan perintah Str::slug('parameter') jadi ketika menyimpan hanya menggunakan code seperti dibawah ini.
<?php ... public function store(Request $request){ $post = new Post; $post->title = $request->title; $post->slug = Str::slug($post->title, '-'); $post->body = $request->body; $post->save(); }
Tapi kalau hanya dengan cara ini akan ada kendala jika post memiliki title yang sama.Karena slug juga bersifat unique.Daripada teman-teman pusing memikirkan logikannya bisa menggunakan package cviebrock/eloquent-sluggable.
Package cviebrock/eloquent-sluggable
Untuk menggunakan package cviebrock/eloquent-sluggable pertama yang dilakukan adalah install package.
composer require cviebrock/eloquent-sluggable
Setelah terinstal publish konfigurasi file agar bisa merubah settingan default dari package.
php artisan vendor:publish --provider="Cviebrock\EloquentSluggable\ServiceProvider"
Update Model laravel teman-teman,contohnya menjadi seperti dibawah ini.
<?php use Cviebrock\EloquentSluggable\Sluggable; class Post extends Model { use Sluggable; /** * Return the sluggable configuration array for this model. * * @return array */ public function sluggable(): array { return [ 'slug' => [ 'source' => 'title' ] ]; } }
title adalah nama kolom table yang akan dijadikan patokan dari slug.Atau jika ingin menggunakannya tanpa menambahkan di model panggil fungsi SlugService::createSlug seperti contoh dibawah ini.
<?php ... use Cviebrock\EloquentSluggable\Services\SlugService; ... public function store(Request $request){ $post = new Post; $post->title = $request->title; $post->slug = SlugService::createSlug(Post::class, 'slug', $post->title); $post->body = $request->body; $post->save(); }
Sekian tutorial kali ini,jika ada yang kurang jelas bisa ditanyakan dibawah.Kalau diatas susah gak ada kolom komentar.
Top comments (0)