DEV Community

Cover image for Membuat Slug Di Laravel
MedanInCode
MedanInCode

Posted on • Originally published at medanincode.com

Membuat Slug Di Laravel

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/
Enter fullscreen mode Exit fullscreen mode

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/
Enter fullscreen mode Exit fullscreen mode

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();

}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Setelah terinstal publish konfigurasi file agar bisa merubah settingan default dari package.

php artisan vendor:publish --provider="Cviebrock\EloquentSluggable\ServiceProvider"
Enter fullscreen mode Exit fullscreen mode

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'
            ]
        ];
    }
}
Enter fullscreen mode Exit fullscreen mode

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();

}
Enter fullscreen mode Exit fullscreen mode

Sekian tutorial kali ini,jika ada yang kurang jelas bisa ditanyakan dibawah.Kalau diatas susah gak ada kolom komentar.

Discussion (0)