如何使 Laravel 項目中的 URL 更友好化

本文經授權轉自 PHPHub 社區

同時也關于各位關注我的 GitHub

說明

cviebrock/eloquent-sluggable 是一款可對 Laravel 項目中的 URL 進行友好化的擴展包。

本文章由 The EST Group 成員 @Kelvin 撰寫, 首發地為 PHPHub 社區.

Demo

Demo 截圖

運行 Demo

Demo 代碼請見:

https://github.com/CycloneAxe/est-eloquent-sluggable-demo

請參照此文檔運行 Demo:

https://phphub.org/topics/1902

場景說明

在我們平時的 Laravel 項目中, 若有一篇 title 為 "My Dinner With André & Fran?ois", id 為 5 的文章, 一般會生成如下鏈接:

http://example.com/post/5

但如果我們想使用 title 來生成文章的 url, 這時 url 就會變成下面這樣:

http://example.com/post/My+Dinner+With+Andr%C3%A9+%26+Fran%C3%A7ois

可以看到生成的 url 看起來并不是特別清晰, 且對 SEO 也不友好. 這時我們就需要使用到 eloquent-sluggable 來對 url 進行轉換了, 轉換后的結果如下:

http://example.com/post/my-dinner-with-andre-francois

這時可以明顯看到轉換后的 url 更加清晰易讀, 對 SEO 也更加友好.

文章概覽

  1. 安裝;
  2. 集成;
  3. 使用;

1. 安裝

1). 使用 composer 安裝:

composer require cviebrock/eloquent-sluggable

2). 修改 config/app 文件,在 providers 數組內追加如下內容

'providers' => [
    // ...
    'Cviebrock\EloquentSluggable\SluggableServiceProvider',
];

2. 集成

本文假設你已經有了一個使用 Laravel 編寫的博客系統,接下來通過對博客文章 (Post 表) 添加對 SEO 友好化的 Url 為例:

1). 修改 Post Model

use Cviebrock\EloquentSluggable\SluggableInterface;
use Cviebrock\EloquentSluggable\SluggableTrait;

class Post extends Model implements SluggableInterface {
  use SluggableTrait;
  
  protected $sluggable = [
    'build_from' => 'title',
    'save_to'    => 'slug',
    ];
}

2). Post 表追加 slug 字段

php artisan sluggable:table posts

3). 數據庫 migration

$ composer dump-autoload
$ php artisan migrate

3. 使用

在每次創建一篇新文章的同時,slug 字段將會自動采用文章 title 作為固定鏈接的地址

$post = new Post([
    'title' => 'My Awesome Blog Post',
]);

$post->save();

文章創建完成后, 您可以通過 $post->slug 來獲取文章的 slug.

更多的例子請移步 官方文檔 參考.


歡迎關注 LaravelTips, 一個專注于為 Laravel 開發者服務, 致力于幫助開發者更好的掌握 Laravel 框架, 提升開發效率的微信公眾號.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容