irfanchowdhury / unique-slug-generate
一个简单的Laravel Eloquent模型唯一slug生成器
v0.1.4
2023-08-10 20:07 UTC
Requires
- php: >=7.4
README
这是一个简单而漂亮的Laravel eloquent模型唯一slug生成器。
安装
composer require irfanchowdhury/unique-slug-generate
配置
服务提供者注册 在 config/app.php
文件中的 providers
数组中添加 -
'providers' => [ // ... Irfan\LaravelUniqueSlug\UniqueSlugServiceProvider::class, // ... ],
外观类别名 在别名数组中添加 -
'aliases' => Facade::defaultAliases()->merge([ // ... 'UniqueSlug' => Irfan\LaravelUniqueSlug\Facades\UniqueSlug::class, // ... ])->toArray(),
从控制器中使用
首先导入UniqueSlug外观
use Irfan\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 akash/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, ];