Open source
Tags for Laravel
composer require roundly-consulting/tags-for-laravelPrehľad
Typované taxonómie pre akýkoľvek Eloquent model. Každý druh štítkov deklarujete raz — kurátorovaný strom kategórií s jedným žánrom na koncert, voľné označenia najviac päť, strom zručností spoločný pre kandidátov aj pracovné ponuky — a rovnaké pravidlá platia vo vašom kóde, formulároch, úlohách vo fronte aj vo voliteľnom JSON API. Názvy sú preložiteľné so slugom pre každý jazyk, štítky sú globálne alebo patria tímu či tenantovi a čítanie, query scopes, našepkávanie ani počty použitia nikdy nespôsobia N+1 dotazy. Licencia MIT, postavené len na oficiálnych komponentoch Laravelu a vlastných balíkoch Roundly translatable, sluggable, enums a query-builder — bez externého poskytovateľa štítkov.
Čo získate
Typované taxonómie
Každý druh štítkov deklarujete raz — plochý zoznam alebo strom kategórií, jeden na model alebo do limitu, kurátorovaný alebo voľný.
Jeden štítok na význam, v každom jazyku
Rock, rock a ROCK! sú jeden štítok; C, C++ a C# zostanú tri. Preložiteľné názvy, slug pre každý jazyk a stabilné slugy pre URL, ktoré sa nikdy nepohnú.
Globálne alebo pre tenanta
Štítky spoločné pre všetkých alebo vlastné pre tím, klienta či projekt — jeden rozsah nikdy nevidí, nepoužije ani neupraví štítky iného.
Stromy kategórií
Vnárajte, presúvajte, zoraďujte, mažte s odmietnutím, presunom detí alebo celou vetvou a hľadajte „všetko pod Hudbou“ jedným dotazom.
Dotazy a objavovanie
Scopes pre ktorýkoľvek, všetky aj žiadny štítok vrátane potomkov, stránka modelov so štítkami na dva dotazy, našepkávanie vo všetkých jazykoch a popularita.
Formuláre, filtre a voliteľné API
Validačné pravidlo, filter pre query-builder, súhrnný resource a JSON API, ktoré nikdy neprezradí názov PHP triedy ani štítok iného tenanta.
Fasáda, DI alebo akcie
Jedna fasáda Tags, injektovateľný manažér alebo jednoúčelové akcie — a nahrávací fake, ktorý každé volanie aj tak vykoná.
Dokumentácia
Príklady použitia
Kde sa balík hodí — podujatia, publikovanie, helpdesky, e-shopy, pracovné portály a SaaS pre viac tenantov — a ktorá dodaná funkcia za tým stojí.
Inštalácia
Inštalácia cez Composer, typy kľúčov a názvy tabuliek, publikovanie a spustenie migrácií, kontrola jazykov a model so štítkami.
Konfigurácia
Každý kľúč konfigurácie s env premennou a predvolenou hodnotou — kľúče, tabuľky, typy, názvy a slugy, limity, aliasy pre API, oprávnenia a routy.
Typy štítkov
Typované taxonómie v kóde alebo v konfigurácii — stromy či ploché zoznamy, jeden štítok alebo limit, kurátorované či voľné — a úprava typov iných balíkov.
Modely so štítkami
Kontrakt Taggable a trait HasTags — tagScope() a tagTypes(), vzťah tags() len na čítanie, factory a čo spraví zmazanie modelu.
Fasáda Tags
Prehľad fasády Tags — define a types, handle katalógu type(), handle for($model), ploché metódy na označovanie, buildery a dátové objekty.
DI a akcie
Bez fasády: injektujte TagsManager alebo zavolajte jednoúčelovú akciu — každá akcia so signatúrou execute() a cestou cez fasádu.
Označovanie modelov
Pripájanie, odpájanie, sync a clear podľa modelu, kľúča, slugu či názvu — limity, kurátorované zoznamy, vznik za behu, TagChanges a čítanie bez N+1.
Názvy, slugy a preklady
Jeden štítok na význam — normalizované názvy, slugy pre každý jazyk v reťazi jazykov, duplicity a rezervované názvy, stabilné a ručné slugy, farby a ikony.
Správa štítkov
Vytváranie, opakovateľné seedovanie, hľadanie, premenovanie, zmena farby, mazanie a obnova štítkov cez katalóg — plus stĺpce, vzťahy a scopes modelu Tag.
Stromy kategórií
Vnárajte štítky, presúvajte a zoraďujte ich, mažte s odmietnutím, presunom detí alebo celým podstromom a čítajte stromy aj cesty jedným dotazom.
Štítky tenantov
Štítky, ktoré patria tímu, klientovi či projektu, vedľa spoločných globálnych — katalógy s rozsahom, prísne oddelené zápisy, typy len globálne a dotazy.
Vyhľadávanie modelov
withAnyTags, withAllTags, withoutTags a withTagsOf — s potomkami a rozsahmi — plus opačný vzťah taggedModels().
Našepkávanie a populárne štítky
suggest() hľadá začiatky slugov vo všetkých jazykoch, potom názvy — popular() radí podľa počtu použití alebo naživo, len zo záznamov, ktoré smiete ukázať.
Validácia, filtre a resources
TagsRule pre form requesty, TagsFilter pre indexové endpointy s query-builder a TagSummaryResource na vnorenie štítkov do vlastných API resources.
JSON API
Voliteľné JSON API — typy, zoznamy a stromy, našepkávanie a popularita, správa štítkov s presunmi a radením, za vašimi oprávneniami, bez názvov tried.
Súbežné zápisy a integrita
Ako zápisy štítkov, stromov a katalógu zostanú správne pri súbežných zápisoch — pevné poradie zámkov, jeden prechod podľa kľúčov, savepointy, opakovanie.
Udalosti
Osem udalostí po potvrdení — Tagged, Untagged a šesť udalostí katalógu — pre vyhľadávacie indexy, cache, audit a webhooky.
Výnimky
Každá TagsException so stabilným chybovým kódom a stavom HTTP — plus ako ich zobraziť cez errorCode(), clientMessage() a status().
Artisan príkazy
tags:types vypíše všetky typy, tags:doctor skontroluje dáta a nastavenie, tags:repair opraví cesty, kľúče rozsahu, osirotené priradenia a počty.
Testovanie
Tags::fake() zaznamená každú operáciu a aj tak ju vykoná — každá asercia a jej negatívna dvojička, zaznamenané operácie, matchery pre Pest a factory.
Požiadavky
PHP 8.4+, Laravel 12 alebo 13, PostgreSQL 12+ alebo MySQL 8.0.23+ (SQLite pre testy), ext-json, ext-mbstring a päť balíkov Roundly.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.