Laravel Sluggable 项目教程
1. 项目的目录结构及介绍
Laravel Sluggable 项目的目录结构遵循标准的 Laravel 包结构。以下是主要目录和文件的介绍:
laravel-sluggable/
├── src/
│ ├── HasSlug.php
│ ├── SlugOptions.php
│ ├── SlugService.php
│ └── SluggableServiceProvider.php
├── tests/
│ └── SluggableTest.php
├── composer.json
├── LICENSE
└── README.md
- src/: 包含项目的核心源代码。
- HasSlug.php: 定义了模型中使用 slug 的 trait。
- SlugOptions.php: 提供了配置 slug 生成的选项。
- SlugService.php: 负责生成 slug 的服务类。
- SluggableServiceProvider.php: Laravel 服务提供者,用于注册和引导包。
- tests/: 包含项目的测试文件。
- SluggableTest.php: 项目的单元测试文件。
- composer.json: 项目的依赖管理文件。
- LICENSE: 项目的许可证文件。
- README.md: 项目的说明文档。
2. 项目的启动文件介绍
Laravel Sluggable 项目的启动文件是 SluggableServiceProvider.php
。这个文件负责注册和引导包。以下是该文件的主要内容:
namespace Spatie\Sluggable;
use Illuminate\Support\ServiceProvider;
class SluggableServiceProvider extends ServiceProvider
{
public function boot()
{
// 发布配置文件
$this->publishes([
__DIR__.'/../config/sluggable.php' => config_path('sluggable.php'),
]);
}
public function register()
{
// 合并配置文件
$this->mergeConfigFrom(
__DIR__.'/../config/sluggable.php', 'sluggable'
);
}
}
- boot(): 负责发布配置文件到 Laravel 项目的
config
目录。 - register(): 负责合并配置文件到 Laravel 项目的配置中。
3. 项目的配置文件介绍
Laravel Sluggable 项目的配置文件是 config/sluggable.php
。这个文件包含了生成 slug 的各种选项。以下是配置文件的主要内容:
return [
'source' => 'title', // 生成 slug 的源字段
'onUpdate' => false, // 是否在更新模型时重新生成 slug
'separator' => '-', // slug 的分隔符
'unique' => true, // 是否生成唯一的 slug
'uniqueSuffix' => null, // 唯一的后缀生成器
'includeTrashed' => false, // 是否包含软删除的记录
'reserved' => [], // 保留的 slug
'maxLength' => null, // slug 的最大长度
'maxLengthKeepWords' => true, // 是否保持单词完整
'slugEngineOptions' => [], // slug 引擎的选项
];
- source: 指定生成 slug 的源字段,默认为
title
。 - onUpdate: 指定是否在更新模型时重新生成 slug,默认为
false
。 - separator: 指定 slug 的分隔符,默认为
-
。 - unique: 指定是否生成唯一的 slug,默认为
true
。 - uniqueSuffix: 指定唯一的后缀生成器。
- includeTrashed: 指定是否包含软删除的记录。
- reserved: 指定保留的 slug。
- maxLength: 指定 slug 的最大长度。
- maxLengthKeepWords: 指定是否保持单词完整。
- slugEngineOptions: 指定 slug 引擎的选项。
以上是 Laravel Sluggable 项目的目录结构、启动文件和配置文件的详细介绍。希望这份教程能帮助你更好地理解和使用这个开源项目。