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

Rýchly štart

Pridajte modelu kontrakt Sluggable a trait HasSlug. Bez ďalšej konfigurácie sa pri vytvorení vygeneruje stĺpec slug z atribútu name a pri kolízii dostane sekvenčný sufix:

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Sluggable\Concerns\HasSlug;
use RoundlyConsulting\Sluggable\Contracts\Sluggable;

final class Clinic extends Model implements Sluggable
{
    use HasSlug;   // zero config: `slug` generated from `name`

    protected $fillable = ['name', 'slug'];
}

Clinic::create(['name' => 'Happy Paws'])->slug;   // "happy-paws"
Clinic::create(['name' => 'Happy Paws'])->slug;   // "happy-paws-2"

Potrebné sú obe časti: trait bez implements Sluggable vyhodí InvalidSlugDefinitionException (missingContract). Stĺpec a zdroj pre režim bez konfigurácie pochádzajú z sluggable.defaults.column a sluggable.defaults.source.

Migrácia

Dve Blueprint makrá pridajú stĺpec a unikátny index zodpovedajúci predvolenej definícii (globálna jedinečnosť, soft-deleted riadky sa počítajú ako obsadené):

Schema::create('clinics', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->slug();          // string('slug', 255)
    $table->uniqueSlug();    // unique index clinics_slug_slug_unique
    $table->timestamps();
});

Čítanie slugu

Okrem samotného atribútu dáva kontrakt každému modelu metódy na čítanie, ktoré sú dôležité najmä pri jazykových mapách, no fungujú aj pri reťazcových stĺpcoch:

$clinic->slug;            // "happy-paws"
$clinic->currentSlug();   // "happy-paws"
$clinic->slugMap();       // ['*' => 'happy-paws']  (Sluggable::SINGLE_KEY)

slugFor($locale) číta presne jeden jazyk a je určená len pre stĺpce s jazykovou mapou — pri reťazcovom stĺpci vyhodí výnimku. Každá z týchto metód prijíma voliteľný názov stĺpca; null znamená stĺpec routeKey(), inak prvú definíciu.

S predvolenými nastaveniami sa vygenerovaná hodnota pri bežnom vstupe do 255 znakov zhoduje so Str::slug(), takže po pridaní traitu k existujúcemu modelu zostanú vaše slugy zachované. Rozdiely popisuje časť Formátovanie a sufixy.

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.