corazzi / sluggable
通过挂钩创建事件自动为您的 Eloquent 模型创建 slugs
v1.1.0
2017-03-10 13:34 UTC
This package is not auto-updated.
Last update: 2024-09-28 20:30:33 UTC
README
通过挂钩创建事件自动为您的 Eloquent 模型创建 slugs
安装
在您的 Laravel 项目中运行 composer require Corazzi/sluggable
即可。
用法
要向模型添加自动 slug 生成,请使用 Corazzi\Sluggable\Sluggable
特性。
namespace Acme\Models; use Illuminate\Database\Eloquent\Model; use Corazzi\Sluggable\Sluggable; class Post extends Model { use Sluggable; }
现在,当您创建一个使用该特性的新模型时,它将查找 name
列并生成一个新的 slug,然后将其保存到 slug
列。
$post = Post::create([ 'name' => 'My first post' ]); $post->slug; // my-first-post
自定义列
如果您想为源字符串和 slug 使用不同的列名,您可以在模型上设置受保护的属性 $slugOrigin
和 $slugColumn
。
namespace Acme\Models; use Illuminate\Database\Eloquent\Model; use Corazzi\Sluggable\Sluggable; class Post extends Model { use Sluggable; protected $slugOrigin = 'title'; protected $slugColumn = 'post_name'; }
示例
$post = Post::create([ 'title' => 'My second post' ]); $post->post_name; // my-second-post
现有的 slugs
如果模型已存在 slug,它将自动将整数追加到 slug 的末尾,直到生成一个唯一的 slug。
// my-second-post already exists $post = Post::create([ 'title' => 'My second post' ]); $post->post_name; // my-second-post-1 $post = Post::create([ 'title' => 'My second post' ]); $post->post_name; // my-second-post-2 // ...and so on
显式设置 slugs
在创建新模型时可以显式设置 slug,并将自动生成跳过。
$post = Post::create([ 'name' => 'How to explicitly set a slug', 'slug' => 'explicitly-setting-slugs-with-sluggable' ]); $post->slug; // explicitly-setting-slugs-with-sluggable
空的源列
如果源列为空,则将抛出 Corazzi\Sluggable\EmptyOriginException
。