引言
网络资源访问,路由是多么重要不消多言了。而友好的url地址更是能让人一目了然,增加用户的好感。同时对于爬虫也是好的示例,搜索引擎可以友好地展开工作了。
本文就来讲讲,如何在laravel中构造友好的url路由。
啥是slug?
在早期的互联网时代,为了在页面之间传递数据,复杂的交互一般都会使用cookie等本地缓存,但是浏览器版本的约束,使得服务器端交互仍然需要即时访问。所以各种各样的url地址,带参数跳转的,表单提交的,混为一谈,制作出符合统一规范的路由很不容易。
比如下面的路由,访问一个地址,并且携带querystring参数:
http://example.com/events.php?id=42
相应地,不同的用户,这个id也不相同。不同的页面,也不相同。像这样带参传递的路由地址,是最为原始的。我们在之前的章节已经使用laravel Route功能,重新构造了url,所以访问起来像是连贯的:
http://example.com/events/42
直接使用位置参数绑定的方式传递。因为数字42对用户而言没有实际意义,而对数据库来说是索引字段。如果使用如下方式,效果要友好的多:
http://example.com/events/laravel-hacking-and-coffee
这种基于字符串位置参数绑定的URL方式,被称为 slug。有一个第三方类库专门用于url的友好化。使用 composer 安装:
composer require cviebrock/eloquent-sluggable:^4.3
模型引入 Slug 功能
引入 eloquent-sluggable 类库,只需要在laravel模型文件内引入对应trait,并重载实现sluggable方法:
use Cviebrock\EloquentSluggable\Sluggable;
class Event extends Model {
use Sluggable;
public function sluggable()