devboyarif / laravel-unique-slug
为 Laravel 应用程序提供的简单唯一 slug 生成器
v1.0.3
2023-01-26 16:07 UTC
Requires
- php: ^7.3|^8.0|^8.1
This package is not auto-updated.
Last update: 2024-09-20 22:12:57 UTC
README
为 Laravel 应用程序提供的简单唯一 slug 生成器
安装
composer require devboyarif/laravel-unique-slug
配置
服务提供者注册 在 config/app.php
文件中,在 providers
数组中添加 -
'providers' => [ // ... Devboyarif\LaravelUniqueSlug\UniqueSlugServiceProvider::class, // ... ],
外观类别名 在别名数组中添加 -
'aliases' => Facade::defaultAliases()->merge([ // ... 'UniqueSlug' => Devboyarif\LaravelUniqueSlug\Facades\UniqueSlug::class, // ... ])->toArray(),
从控制器使用
首先导入 UniqueSlug 外观
use Devboyarif\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, 'arif', 'username', ''); // arif // Second time create user. UniqueSlug::generate(User::class, 'arif', 'username', ''); // arif1 // Third time create user. UniqueSlug::generate(User::class, 'arif', 'username', ''); // arif2
示例 - 容易为类别或任何模型生成唯一 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 devboyarif/laravel-unique-slug
配置
return [ /* |-------------------------------------------------------------------------- | Default slug seperator |-------------------------------------------------------------------------- | | This is seperator for the slug value. IF no seperator is provided then this default seperator will be used as slug | */ 'seperator' => '-', /* |-------------------------------------------------------------------------- | Slug max count limit |-------------------------------------------------------------------------- | | Default 100, slug will generated like test-1, test-2, test-3 ... test-100 | */ 'max_count' => 100, ];
贡献
欢迎您创建任何 Pull request。