josezenem / laravel-slugidable
一个用于Laravel的包,可以根据标题和ID为Eloquent模型创建别名
1.2.0
2024-03-12 21:38 UTC
Requires
- php: ^8.0
- illuminate/database: ^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- nunomaduro/larastan: ^1.0
- orchestra/testbench: 6.23|^7.0|^8.0|^9.0
- pestphp/pest: ^1.22|^2.34
- pestphp/pest-plugin-laravel: ^1.3|^2.3
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
README
一个用于Laravel的包,可以根据标题和ID为Eloquent模型创建别名
$model = new Blog(); $model->title = 'Dwight jumped over the fence'; $model->save(); echo $model->slug; // output: dwight-jumped-over-the-fence-012422
所有设置均可针对每个模型进行完全配置。
安装
您可以通过composer安装此包。
composer require josezenem/laravel-slugidable
使用
只需将Josezenem\Slugidable\Slugidable特质添加到您的模型中。
// App\Models\Blog <?php use Josezenem\Slugidable\Slugidable; class Blog extends Model { use Slugidable; protected $fillable = [ 'title', 'slug', ]; } $blog = create([ 'title' => 'My dog Dwight jumped over the fence', ]) // When this is created, it will make the slug of //my-dog-dwight-jumped-over-the-fence-1
我们包含了一个便捷的作用域方法:fromSlugidable(),它将从别名中提取ID并搜索模型
$blog = Blog::fromSlugidable('my-dog-dwight-012422')->first(); // in this scenario only ID: 012422 is used inside the scope to find the slug.
配置
默认情况下,我们使用模型中的id、title、slug列,但您可以通过向您的模型中添加以下方法来覆盖这些设置。
protected function configureSlugidableSettings():void { $this->slugidableSettings = [ 'slug_from' => 'title', 'slug_to' => 'slug', 'using_key_name' => $this->getKeyName(), 'on' => 'suffix', 'using_separator' => '-', 'force_slug_from' => false, ]; }
- slug_from 是别名将从中获取的地方
- slug_to 别名存在的地方
- using_key_name 用于前缀或后缀的ID字段
- on 可以是 "prefix" 以在别名文本之前放置ID,或 "suffix" 以在之后放置。
- using_separator 在创建别名时使用的分隔符
- force_slug_from 强制系统始终从 'slug_from' 获取别名,无论是否存在
slug_to
测试
composer test
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请审查我们的安全策略以了解如何报告安全漏洞。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。