siddiqur / laravel-unique-slug
Laravel eloquent model 简单而美观的唯一slug生成器。
dev-master
2024-03-07 12:49 UTC
Requires
- php: >=7.4
This package is auto-updated.
Last update: 2024-09-07 13:52:18 UTC
README
Laravel eloquent model 简单而美观的唯一slug生成器。
安装
composer require siddiqur/laravel-unique-slug
配置
服务提供者注册 在 config/app.php
文件中,向 providers
数组添加 -
'providers' => [ // ... Siddiqur\LaravelUniqueSlug\UniqueSlugServiceProvider::class, // ... ],
外观类别名 向别名数组添加 -
'aliases' => Facade::defaultAliases()->merge([ // ... 'UniqueSlug' => Siddiqur\LaravelUniqueSlug\Facades\UniqueSlug::class, // ... ])->toArray(),
从控制器中使用
首先导入 UniqueSlug 外观
use Siddiqur\LaravelUniqueSlug\Facades\UniqueSlug;
示例 #01 - 从标题生成唯一slug
假设,我们在 Post
类中添加了唯一的 slug
列。现在,如果我们传递 title
并从其中生成 slug
,那么 -
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
示例 #02 - 传递自定义分隔符
假设分隔符是 ''
空的。
// First time create user. UniqueSlug::generate(User::class, 'akash', 'username', ''); // akash // Second time create user. UniqueSlug::generate(User::class, 'akash', 'username', ''); // akash1 // Third time create user. UniqueSlug::generate(User::class, 'akash', 'username', ''); // akash2
示例 - 容易为分类或任何模型生成唯一slug
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 文档
生成方法 -
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
发布配置
php artisan vendor:publish siddiqur/laravel-unique-slug
配置
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, ];
贡献
欢迎您创建任何 Pull request。