NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Open source

Tags for Laravel

Inštalácia
composer require roundly-consulting/tags-for-laravel
Vyžaduje: PHP ^8.4 · Laravel ^12.0|^13.0

Prehľ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 kryptomien

Odoslaní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.