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)