suifan / slug-helper
此包最新版本(v0.1.0)没有可用的许可证信息。
Laravel 包,用于生成唯一的缩略名。
v0.1.0
2023-09-25 18:10 UTC
Requires
- php: ^8.0
- illuminate/support: ^8.0
README
一个简单而美观的 Laravel eloquent 模型唯一缩略名生成器。
安装
composer require sufian/slug-helper
配置
服务提供者注册 在 config/app.php
中,将以下内容添加到 providers
数组中 -
'providers' => [ // ... Sufian\SlugHelper\SlugHelperServiceProvider::class, // ... ],
门面类别名 将以下内容添加到别名数组中 -
'aliases' => Facade::defaultAliases()->merge([ // ... 'UniqueSlug' => Sufian\SlugHelper\Facades\SlugHelperFacade::class, // ... ])->toArray(),
从控制器中使用
首先导入 UniqueSlug 门面
use Sufian\SlugHelper\Facades\SlugHelperFacade;
示例 #01 - 从标题生成唯一缩略名
假设,我们在 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, 'sufian', 'username', ''); // sufian // Second time create user. UniqueSlug::generate(User::class, 'sufian', 'username', ''); // sufian_1 // Third time create user. UniqueSlug::generate(User::class, 'sufian', 'username', ''); // sufian_2
示例 - 容易地为类别或任何模型生成唯一缩略名
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 sufian/slug-helper
配置
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。