pawelmysior/laravel-sluggable

A small trait, a wrapper of cviebrock/eloquent-sluggable

Downloads

353

Stars

0

Version

7.0.0

Sluggable

This is a very small trait. It is an elegant wrapper of cviebrock/eloquent-sluggable.

It defines a default slug source attribute (title) and adds a scope to find a model by the slug.

Installation

You can install the package via composer:

composer require pawelmysior/laravel-sluggable

Preparation

Use the trait on the model:

<?php
 
namespace App;
  
use Illuminate\Database\Eloquent\Model;
use PawelMysior\Sluggable\Sluggable;
 
class Post extends Model
{
    use Sluggable;
}

By default the slug is created from the title attribute, but you can easily change it by overwriting the getSlugSourceAttribute() method from the trait on your model like so:

<?php
 
namespace App;
  
use Illuminate\Database\Eloquent\Model;
use PawelMysior\Sluggable\Sluggable;
 
class Post extends Model
{
    use Sluggable;

    protected function getSlugSourceAttribute(): string
    {
        return $this->name;
    }
}

Usage

The slugs will now be created. There is also a scope defined in the trait that lets you find a post by slug:

Post::findBySlug('slug');

License

The MIT License (MIT). Please see License File for more information.

pawelmysior

Author

pawelmysior