myolbd/unique-slug
最新稳定版本:0.1.2
Composer 安装命令:
composer require myolbd/unique-slug
包简介
A Laravel package to generate unique and SEO-friendly slugs for modelsy
关键字:
README 文档
README
A lightweight and flexible Laravel package to generate unique, SEO-friendly slugs for your Eloquent models.
Perfect for creating clean URLs for blogs, products, users, and more.
🚀 Features
- Generate unique slugs from any model field
- Prevents duplicates by auto-appending numbers
- Configurable separator and max retry count
- Works with any Eloquent model
- Supports Laravel >=7x
- Includes Facade (
Slug::) and Service Provider - Publishable config file
📦 Installation
Require the package via Composer:
composer require myolbd/unique-slug
Configuration
Service Provider Registration
In config/app.php, add in providers array -
'providers' => [ // ... Myol\UniqueSlug\SlugServiceProvider::class, // ... ],
Facade Class Alias Add in aliases array -
'aliases' => Facade::defaultAliases()->merge([ // ... 'Slug' => Myol\UniqueSlug\Facades\Slug::class, // ... ])->toArray(), ## Use from Controller #### Import first the UniqueSlug facade ```php use Myol\UniqueSlug\Facades\Slug;
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 Slug::generate(Post::class, 'Simple Post', 'slug'); // Output: simple-post // Second time create post with title Simple Post Slug::generate(Post::class, 'Simple Post', 'slug'); // Output: simple-post-1 // Third time create post with title Simple Post Slug::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. Slug::generate(User::class, 'sujon', 'username', ''); // sujon // Second time create user. Slug::generate(User::class, 'sujon', 'username', ''); // sujon1 // Third time create user. Slug::generate(User::class, 'sujon', 'username', ''); // sujon2
Example - Unique slug for category or any model easily
public function create(array $data): Category|null { if (empty($data['slug'])) { $data['slug'] = Slug::generate(Category::class, $data['name'], 'slug'); } return Category::create($data); }
Generate method -
Slug::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 myolbd/unique-slug
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.
统计信息
- 总下载量: 5
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-08-25