該軟體包為您的模型提供可標記的行為。安裝套件後,您唯一要做的就是將HasTags
特徵添加到 Eloquent 模型中以使其可標記。
但我們並沒有止步於每個套件中都有的常規標記功能。 Laravel Tags 附帶電池。它開箱即用,支援翻譯標籤、多種標籤類型和排序功能。
您可以在 https://spatie.be/docs/laravel-tags 上找到文件。
以下是一些程式碼範例:
// 將 HasTags 特徵應用於模型use IlluminateDatabaseEloquentModel;use SpatieTagsHasTags;class NewsItem extends Model {使用HasTags; // ...}
// 建立一個帶有一些標籤的模型$newsItem = NewsItem::create([ 'name' => '文章標題', 'tags' => ['first tag', 'second tag'], //tags will be如果不存在則建立]);// 附加標籤$newsItem->attachTag('third tag');$newsItem->attachTag('third tag','some_type');$newsItem->attachTags(['第四個標籤', '第五個標籤']);$newsItem->attachTags(['第四個標籤','第五個標籤'],'some_type');// 分離標籤$newsItem->detachTag ('第三個標籤');$newsItem ->detachTag('第三個標籤','some_type');$newsItem->detachTags(['第四個標籤','第五個標籤']); $newsItem->detachTags(['第四個標籤','第五個標籤'] ,'some_type');// 取得所有在模型的標籤$newsItem->tags;// 同步標籤$newsItem->syncTags( ['first tag', 'second tag']); // 此模型上的所有其他標籤將會被分開// 與型別同步標籤$newsItem->syncTagsWithType(['category 1', 'category 2'], 'categories'); $newsItem->syncTagsWithType(['主題 1', '主題 2'], '主題'); // 檢索類型為 $newsItem->tagsWithType('categories'); 的標籤 $newsItem->tagsWithType('主題'); // 檢索具有任何給定標籤的模型NewsItem::withAnyTags(['first tag', 'second tag'])->get();// 檢索具有所有給定標籤的模型NewsItem::withAllTags(['第一個標籤', '第二個標籤'])->get();// 擷取沒有任何給定標籤的模型NewsItem::withoutTags(['第一個標籤', '第二個標籤'] )->get( );// 翻譯標籤$tag = Tag::findOrCreate('my tag');$tag->setTranslation('name', 'fr', 'mon tag');$tag->setTranslation ('name' , 'nl', 'mijn tag');$tag->save();// 取得翻譯$tag->translate('name'); //回傳我的名字$tag->translate('name', 'fr'); // 回傳mon 標籤(可選locale 參數)// 透過可標記模型進行方便的翻譯$newsItem->tagsTranslated();// 傳回帶有slug_translated 和name_translated 屬性的標籤$newsItem->tagsTranslated('fr') ;// 傳回帶有slug_translated 和name_translated 屬性的標籤為指定語言環境設定slug_translated 和name_translated 屬性// 使用標記類型$tag = Tag::findOrCreate('tag 1', 'my type');// 標記有slugs $tag = Tag::findOrCreate('yet another tag' );$標籤->slug; //回傳「yet-another-tag」//標籤是可排序的$tag = Tag::findOrCreate('my tag');$tag->order_column; //回傳 1$tag2 = Tag::findOrCreate('另一個標籤');$tag2->order_column; //回傳2//操作標籤的順序$tag->swapOrder($anotherTag);//檢查模型是否有標籤$newsItem->hasTag('first tag');$newsItem->hasTag('first標籤', 'some_type');
Spatie 是一家位於比利時安特衛普的網頁設計公司。您可以在我們的網站上找到所有開源專案的概述。
我們投入了大量資源來創建一流的開源套件。您可以透過購買我們的一款付費產品來支持我們。
我們非常感謝您從家鄉寄給我們一張明信片,並註明您正在使用我們的哪種套餐。您可以在我們的聯絡頁面上找到我們的地址。我們在虛擬明信片牆上發布所有收到的明信片。
該套件需要 Laravel 8 或更高版本、PHP 8 或更高版本,以及支援json
欄位和 MySQL 相容功能的資料庫。
您可以透過 Composer 安裝該軟體包:
作曲家需要 spatie/laravel-tags
該包將自動註冊。
您可以透過以下方式發布遷移:
php artisan 供應商:發佈 --provider="SpatieTagsTagsServiceProvider" --tag="tags-migrations"
發布遷移後,您可以透過執行遷移來建立tags
和taggables
表:
php 工匠遷移
您可以選擇使用以下方式發佈設定檔:
php artisan 供應商:發佈 --provider="SpatieTagsTagsServiceProvider" --tag="tags-config"
這是已發布的設定檔的內容:
return [/* * 給定函數在儲存之前從標籤名稱屬性產生一個 URL 友善的「slug」。 * 預設為 Str::slug (https://laravel.com/docs/5.8/helpers#method-str-slug) */'slugger' => null, ];
您可以在 https://docs.spatie.be/laravel-tags/v4 上找到該文件。
發現自己在使用該包時陷入困境?發現錯誤?您對改進laravel-tags
套件有一般性問題或建議嗎?請隨意在 GitHub 上建立問題,我們將盡力盡快解決它。
如果您發現有關安全的錯誤,請發送郵件至 [email protected],而不是使用問題追蹤器。
將phpunit.xml.dist
複製到phpunit.xml
並填寫您的資料庫憑證。
運行composer test
。
請參閱變更日誌以了解最近變更的更多資訊。
詳細資訊請參閱貢獻。
如果您發現有關安全的錯誤,請發送郵件至 [email protected],而不是使用問題追蹤器。
您可以自由使用這個軟體包,但如果它進入您的生產環境,我們非常感謝您從您的家鄉給我們寄一張明信片,註明您正在使用我們的哪個軟體包。
我們的地址是:Spatie, Kruikstraat 22, 2018 安特衛普, 比利時。
我們在公司網站上發布所有收到的明信片。
弗里克·范德赫滕
所有貢獻者
麻省理工學院許可證 (MIT)。請參閱許可證文件以獲取更多資訊。