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