mvnrsa / laravel-sluggable-trait
这是一个可以应用于 Eloquent 模型以在保存时自动生成 slugs 的特性。在 martinbean/laravel-sluggable-trait 的基础上进行了一些改进,使用下划线(或任何其他字符)代替斜杠作为 slugs。
0.3.2
2022-05-01 13:50 UTC
Requires
- php: >=5.4.0
- illuminate/database: >=4.0
- illuminate/support: >=4.0
This package is auto-updated.
Last update: 2024-09-29 06:14:46 UTC
README
可以将此特性应用于 Eloquent 模型,以便在保存时自动生成 slugs。
这是对 martinbean/laravel-sluggable-trait 的一点点改进,允许将 slug 字符从斜杠更改为下划线(默认)或您选择的任何字符。
安装
$ composer require mvnrsa/laravel-sluggable-trait
用法
<?php namespace App; use Illuminate\Database\Eloquent\Model; use mvnrsa\Database\Eloquent\Sluggable; class Item extends Model { use Sluggable; }
默认情况下,该特性假定您的数据库有两列:name
和 slug
。如果您需要更改这些,可以重写 getter 方法
<?php namespace App; use Illuminate\Database\Eloquent\Model; use mvnrsa\Database\Eloquent\Sluggable; class Item extends Model { use Sluggable; public function getSlugColumnName() { return 'seo_title'; } public function getSluggableString() { return 'headline'; } /* Optional */ public function getSlugCharacter() { return '_'; } }
getSlugColumnName()
方法应该返回您希望在数据库表中存储 slugs 的列名。
getSluggableString()
应该返回您希望从中创建 slug 的字符串。这是一个方法,而不是属性或常量,因为您可能希望从多个列的值中创建一个 slug。例如
/** * Create a string based on the first and last name of a person. */ public function getSluggableString() { return sprintf('%s %s', $this->first_name, $this->last_name); }
/** * Create a string based on a formatted address string. */ public function getSluggableString() { return implode(', ', array_filter([ $this->street_address, $this->locality, $this->region, $this->postal_code, $this->country, ])); }
getSlugCharacter()
应该返回您希望在 slugs 中使用的替换字符。
我的默认值是下划线 (_)
/** * Allows overriding the character used in slugs. */ public function getSlugCharacter() { return '_'; }
许可证
根据 MIT 许可证 授权。