A trait you can apply to Eloquent models to have slugs automatically generated on save. A slight omprovement on martinbean/laravel-sluggable-trait to use underscore (or any other character) instead of dash in slugs.
mvnrsa/laravel-sluggable-trait is a Laravel package for a trait you can apply to eloquent models to have slugs automatically generated on save. a slight omprovement on martinbean/laravel-sluggable-trait to use underscore (or any other character) instead of dash in slugs..
It currently has 0 GitHub stars and 42 downloads on Packagist (latest version 0.3.2).
Install it with composer require mvnrsa/laravel-sluggable-trait.
Discover more Laravel packages by mvnrsa
or browse all Laravel packages to compare alternatives.
Last updated
A trait you can apply to Eloquent models to have slugs automatically generated on save.
This is a slight improvement on
martinbean/laravel-sluggable-trait
to allow the slug character to be changed from dash to underscore (by default)
or any character of your choice.
$ composer require mvnrsa/laravel-sluggable-trait
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use mvnrsa\Database\Eloquent\Sluggable;
class Item extends Model
{
use Sluggable;
}
By default, the trait assumes your database has two columns: name and slug.
If you need to change these, you can override the getter methods:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use mvnrsa\Database\Eloquent\Sluggable;
class Item extends Model
{
use Sluggable;
public function getSlugColumnName()
{
return 'seo_title';
}
public function getSluggableString()
{
return 'headline';
}
/* Optional */
public function getSlugCharacter()
{
return '_';
}
}
The getSlugColumnName() method should return the name of the column you want
to store slugs in your database table.
The getSluggableString() should return a string you want to create a slug
from. This is exposed as a method and not a property or constantly as you may
want to create a slug from the value of one than one column. For example:
/**
* Create a string based on the first and last name of a person.
*/
public function getSluggableString()
{
return sprintf('%s %s', $this->first_name, $this->last_name);
}
/**
* Create a string based on a formatted address string.
*/
public function getSluggableString()
{
return implode(', ', array_filter([
$this->street_address,
$this->locality,
$this->region,
$this->postal_code,
$this->country,
]));
}
The getSlugCharacter() should return the character you want to use as
replacement in slugs.
My default is an underscore (_).
/**
* Allows overriding the character used in slugs.
*/
public function getSlugCharacter()
{
return '_';
}
Licensed under the MIT Licence.