DEV Community

Cover image for Membuat Slug Di Laravel
MedanInCode
MedanInCode

Posted on • Originally published at medanincode.com

3 3

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.

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay