fangadchy24 / laravel-unique-slug
一个简单且美观的Laravel Eloquent模型唯一slug生成器。
v0.2.0
2022-11-26 12:49 UTC
Requires
- php: >=7.4
README
一个简单且美观的Laravel Eloquent模型唯一slug生成器。
安装
composer require fahadchy/laravel-unique-slug
配置
服务提供者注册 在 config/app.php
文件中的 providers
数组中添加 -
'providers' => [ // ... Fahad\LaravelUniqueSlug\UniqueSlugServiceProvider::class, // ... ],
外观类别名 在别名数组中添加 -
'aliases' => Facade::defaultAliases()->merge([ // ... 'UniqueSlug' => Fahad\LaravelUniqueSlug\Facades\UniqueSlug::class, // ... ])->toArray(),
从控制器中使用
首先导入UniqueSlug外观
use Fahad\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, 'fahad', 'username', ''); // fahad // Second time create user. UniqueSlug::generate(User::class, 'fahad', 'username', ''); // fahad1 // Third time create user. UniqueSlug::generate(User::class, 'fahad', 'username', ''); // fahad2
示例 - 为类别或任何模型轻松生成唯一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 --provider="Fahad\LaravelUniqueSlug\UniqueSlugServiceProvider"
配置
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。