Explicación del slug por la misma página del paquete
¿Qué es un slug?
Un slug es una versión simplificada de una cadena, típicamente compatible con URL. El acto de “slugging” de una cadena suele consistir en convertirla en un caso y eliminar los caracteres no compatibles con la URL (espacios, letras acentuadas, amperios, etc.). La cadena resultante puede utilizarse entonces como identificador de un recurso determinado.
Por ejemplo, si tienes un blog con entradas, podrías referirte a cada entrada mediante el ID:
http://example.com/post/1
http://example.com/post/2
… pero eso no es particularmente amigable (especialmente para el SEO). Probablemente preferirías usar el título del post en la URL, pero eso se convierte en un problema si tu post se titula “Mi cena con André y François”, porque esto también es bastante feo:
http://example.com/post/My+Dinner+With+André+%26+François
La solución es crear un slug para el título y usarla en su lugar. Tal vez quieras usar el método incorporado de Laravel, Str::slug(), para convertir ese título en algo más amigable:
http://example.com/post/my-dinner-with-andre-francois
Una URL así hará a los usuarios más felices (es legible, más fácil de escribir, etc.).
Para más información, puede que quieras leer esta descripción en Wikipedia.
Los slug también tienden a ser únicos. Así que si escribes otra entrada con el mismo título, deberías distinguir entre ellas de alguna manera, típicamente con un contador incremental añadido al final del slug:
http://example.com/post/my-dinner-with-andre-francois
http://example.com/post/my-dinner-with-andre-francois-1
http://example.com/post/my-dinner-with-andre-francois-2
Esto mantiene los URLs únicos.
El paquete Eloquent-Sluggable para Laravel tiene como objetivo manejar todo esto por ti automáticamente, con una configuración mínima.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?