sufian / slug-helper
There is no license information available for the latest version (v0.1.0) of this package.
A Laravel package for generating unique slugs.
v0.1.0
2023-09-25 18:10 UTC
Requires
- php: ^8.0
- illuminate/support: ^8.0
README
A simple but beautiful unique slug generator for Laravel eloquent model.
Installation
composer require sufian/slug-helper
Configuration
Service Provider Registration
In config/app.php
, add in providers
array -
'providers' => [ // ... Sufian\SlugHelper\SlugHelperServiceProvider::class, // ... ],
Facade Class Alias Add in aliases array -
'aliases' => Facade::defaultAliases()->merge([ // ... 'UniqueSlug' => Sufian\SlugHelper\Facades\SlugHelperFacade::class, // ... ])->toArray(),
Use from Controller
Import first the UniqueSlug facade
use Sufian\SlugHelper\Facades\SlugHelperFacade;
Example #01- Post unique slug from title
Let's assume, we have in Post
class, we've added slug
column which is unique. Now, if we passed title
and generate slug
from that, then -
use App\Models\Post; // First time create post with title Simple Post UniqueSlug::generate(Post::class, 'Simple Post', 'slug'); // Output: simple-post // Second time create post with title Simple Post UniqueSlug::generate(Post::class, 'Simple Post', 'slug'); // Output: simple-post-1 // Third time create post with title Simple Post UniqueSlug::generate(Post::class, 'Simple Post', 'slug'); // Output: simple-post-2
Example #02 - Pass custom separator
Let's assume separator is ''
empty.
// First time create user. UniqueSlug::generate(User::class, 'sufian', 'username', ''); // sufian // Second time create user. UniqueSlug::generate(User::class, 'sufian', 'username', ''); // sufian_1 // Third time create user. UniqueSlug::generate(User::class, 'sufian', 'username', ''); // sufian_2
Example - Unique slug for category or any model easily
public function create(array $data): Category|null { if (empty($data['slug'])) { $data['slug'] = UniqueSlug::generate(Category::class, $data['name'], 'slug'); } return Category::create($data); }
API Docs
Generate method -
UniqueSlug::generate($model, $value, $field, $separator);
/** * Generate a Unique Slug. * * @param object $model * @param string $value * @param string $field * @param string $separator * * @return string * @throws \Exception */ public function generate( $model, $value, $field, $separator = null ): string
Publish configuration
php artisan vendor:publish sufian/slug-helper
Configurations
return [ /* |-------------------------------------------------------------------------- | Slug default separator. |-------------------------------------------------------------------------- | | If no separator is passed, then this default separator will be used as slug. | */ 'separator' => '-', /* |-------------------------------------------------------------------------- | Slug max count limit |-------------------------------------------------------------------------- | | Default 100, slug will generated like | test-1, test-2, test-3 .... test-100 | */ 'max_count' => 100, ];
Contribution
You're open to create any Pull request.