paxha / laravel-sluggable
此包提供了一个事件,当保存或创建任何 Eloquent 模型时,将生成一个唯一的 slug。
v2.2.0
2020-12-17 16:16 UTC
Requires
- php: ^7.2|^8.0
Requires (Dev)
- orchestra/testbench-dusk: ^4.0
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-18 00:33:12 UTC
README
Laravel Slug 生成器
介绍
此包提供了一个事件,当保存或创建任何 Eloquent 模型时,将生成一个唯一的 slug。
安装
composer require paxha/laravel-sluggable
使用
入门指南
考虑以下用于层次数据的表架构
Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('slug')->unique(); });
在模型中使用 Sluggable
特性来处理 slug
class User extends Model { use \Sluggable\Traits\Sluggable; }
默认情况下,特性期望以下三项:
- slugFrom(): array (可选) 如果使用
name
列 - slugSaveTo(): string (可选) 如果使用
slug
列 - separator(): string (可选) 默认
-
您也可以重写它 slugFrom()
,slugSaveTo()
和 separator()
class User extends Model { use \Sluggable\Traits\Sluggable; public static function slugFrom() { return ['name']; // or return ['first_name', 'last_name']; } public static function slugSaveTo() { return 'slug'; // or return ['user_slug']; } public static function separator() { return '-'; // or return '_'; } }
示例
示例 A
数据库
Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('first_name'); $table->string('last_name'); $table->string('slug')->unique(); });
模型
class User extends Model { use \Sluggable\Traits\Sluggable; protected $fillable = [ 'first_name', 'last_name', ]; public static function slugFrom() { return ['first_name', 'last_name']; } }
创建用户
User::create([ 'first_name' => 'John', 'last_name' => 'Doe' ]); // or $user = new User(); $user->first_name = 'John'; $user->last_name = 'Doe'; $user->save();
输出
{ 'first_name': 'John', 'last_name': 'Doe', 'slug': 'john-doe', }
示例 B
表
Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('user_slug')->unique(); });
模型
class User extends Model { use \Sluggable\Traits\Sluggable; protected $fillable = [ 'name', ]; public static function slugSaveTo() { return ['user_slug']; } public static function separator() { return '_'; } }
创建用户
User::create([ 'name' => 'John Doe' ]); // or $user = new User(); $user->name = 'John Doe'; $user->save();
输出
{ 'name': 'John Doe', 'user_slug': 'john_doe', }
许可证
这是一个开源的 Laravel 库,许可协议为 MIT 许可证。