laraeast / laravel-sluggable
在Laravel中为Eloquent模型轻松创建短网址
v2.2.0
2021-06-18 07:18 UTC
Requires
- php: ^7.3|^8.0
- laravel/framework: ^7.0|^8.0
Requires (Dev)
- mockery/mockery: ^1.4
- orchestra/testbench: ^5.3|^6.0
README
在Laravel中为Eloquent模型轻松创建短网址。背景:什么是短网址?
短网址是一个简化版本的字符串,通常是URL友好的。对字符串进行“短网址化”通常涉及将其转换为一种大小写,并删除任何非URL友好的字符(空格、带重音的字母、和号等)。生成的字符串可以用来作为特定资源的标识符。
例如,如果你有一个博客,其中包含文章,你可以通过ID来引用每篇文章
http://example.com/post/1
http://example.com/post/2
...但这并不友好(特别是对于SEO)。你可能更喜欢使用文章的标题作为URL,如果你的文章标题是"My Dinner With Ahmed & Omar",那么URL将是
http://example.com/post/1-my-dinner-with-ahmed-omar
安装
-
通过Composer安装此包
- Laravel 5.2 >= 6.x
$ composer require laraeast/laravel-sluggable:^1.0
- Laravel 7.x
$ composer require laraeast/laravel-sluggable:^2.0
该包将自动注册其服务提供者。
- Laravel 5.2 >= 6.x
中间件
你应该将 SluggableRedirectMiddleware
添加到 web
中间件,以便重定向到最新的更新短网址。 app/Http/Kernel.php
文件
/** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ ... \Laraeast\LaravelSluggable\SluggableRedirectMiddleware::class, ], ... ];
更新你的Eloquent模型
你的模型应使用Sluggable特性,它有一个抽象方法 sluggableFields()
,你需要对其进行定义。这是设置任何特定模型配置的地方
use Laraeast\LaravelSluggable\Sluggable; class Post extends Model { use Sluggable; /** * The sluggable fields for model. * * @return array */ public function sluggableFields() { return ['name']; } }