Este paquete ofrece un comportamiento etiquetable para sus modelos. Una vez instalado el paquete, lo único que debe hacer es agregar el rasgo HasTags
a un modelo de Eloquent para que se pueda etiquetar.
Pero no nos detuvimos con las capacidades de etiquetado habituales que se encuentran en cada paquete. Laravel Tags viene con pilas incluidas. Desde el primer momento, tiene soporte para traducir etiquetas, múltiples tipos de etiquetas y capacidades de clasificación.
Encontrarás la documentación en https://spatie.be/docs/laravel-tags.
A continuación se muestran algunos ejemplos de código:
// aplicar el rasgo HasTags a un modelo; usar IlluminateDatabaseEloquentModel; usar SpatieTagsHasTags; clase NewsItem extiende el modelo {use etiquetas Has; //...}
// crea un modelo con algunas etiquetas$newsItem = NewsItem::create([ 'nombre' => 'El título del artículo', 'etiquetas' => ['primera etiqueta', 'segunda etiqueta'], //las etiquetas serán creados si no existen]);// adjuntando etiquetas$newsItem->attachTag('tercera etiqueta');$newsItem->attachTag('tercera tag','some_type');$newsItem->attachTags(['cuarta etiqueta', 'quinta etiqueta']);$newsItem->attachTags(['fourth_tag','quinta_tag'],'some_type');// separar etiquetas$newsItem->detachTag('tercera etiqueta');$newsItem->detachTag('tercera tag','some_type');$newsItem->detachTags(['cuarta etiqueta', 'quinta etiqueta']);$newsItem->detachTags(['cuarta etiqueta', 'quinta etiqueta'],'some_type'); // obtener todas las etiquetas de un modelo$newsItem->tags;// sincronizar etiquetas$newsItem->syncTags(['primera etiqueta', 'segunda etiqueta']); // todas las demás etiquetas en este modelo se separarán // sincronizando etiquetas con un tipo$newsItem->syncTagsWithType(['categoría 1', 'categoría 2'], 'categorías'); $newsItem->syncTagsWithType(['tema 1', 'tema 2'], 'temas'); // recuperando etiquetas con un tipo$newsItem->tagsWithType('categories'); $noticias->tagsWithType('temas'); // recuperando modelos que tienen cualquiera de las etiquetas dadasNewsItem::withAnyTags(['first tag', 'segunda etiqueta'])->get();// recuperando modelos que tienen todas las etiquetas dadasNewsItem::withAllTags([' primera etiqueta', 'segunda etiqueta'])->get();// recuperar modelos que no tienen ninguna de las etiquetas dadasNewsItem:: withoutTags(['primera etiqueta', 'segunda tag'])->get();// traducir una etiqueta$tag = Tag::findOrCreate('my tag');$tag->setTranslation('name', 'fr', 'mon tag');$ tag->setTranslation('name', 'nl', 'mijn tag');$tag->save();// obteniendo traducciones$tag->translate('name'); //devuelve mi nombre$tag->translate('nombre', 'fr'); //devuelve la etiqueta mon (parámetro local opcional)// traducciones convenientes a través de modelos etiquetables$newsItem->tagsTranslated();// devuelve etiquetas con las propiedades slug_translated y name_translated$newsItem->tagsTranslated('fr');// devuelve etiquetas con Propiedades slug_translated y name_translated configuradas para la configuración regional especificada// usando tipos de etiquetas$tag = Tag::findOrCreate('tag 1', 'mi tipo');// las etiquetas tienen babosas$tag = Tag::findOrCreate('otra etiqueta más');$tag->slug; //devuelve "otra-etiqueta más"// las etiquetas se pueden ordenar$tag = Tag::findOrCreate('mi etiqueta');$tag->order_column; //devuelve 1$tag2 = Tag::findOrCreate('otra etiqueta');$tag2->order_column; //devuelve 2// manipulando el orden de las etiquetas$tag->swapOrder($anotherTag);// comprobando si un modelo tiene una etiqueta$newsItem->hasTag('first tag');$newsItem->hasTag('first etiqueta', 'algún_tipo');
Spatie es una agencia de diseño web con sede en Amberes, Bélgica. Encontrará una descripción general de todos nuestros proyectos de código abierto en nuestro sitio web.
Invertimos muchos recursos en la creación de los mejores paquetes de código abierto. Puedes apoyarnos comprando uno de nuestros productos pagos.
Agradecemos mucho que nos envíe una postal desde su ciudad natal, mencionando cuál de nuestros paquetes está utilizando. Encontrarás nuestra dirección en nuestra página de contacto. Publicamos todas las postales recibidas en nuestro muro virtual de postales.
Este paquete requiere Laravel 8 o superior, PHP 8 o superior y una base de datos que admita campos json
y funciones compatibles con MySQL.
Puede instalar el paquete a través del compositor:
El compositor requiere etiquetas spatie/laravel.
El paquete se registrará automáticamente.
Puedes publicar la migración con:
Proveedor artesanal de php: publicar --provider="SpatieTagsTagsServiceProvider" --tag="tags-migrations"
Una vez publicada la migración, puede crear las tags
y las tablas taggables
ejecutando las migraciones:
php migración artesanal
Opcionalmente, puede publicar el archivo de configuración con:
Proveedor artesanal de php: publicar --provider="SpatieTagsTagsServiceProvider" --tag="tags-config"
Este es el contenido del archivo de configuración publicado:
return [/* * La función dada genera un "slug" compatible con URL a partir de la propiedad del nombre de la etiqueta antes de guardarla. * El valor predeterminado es Str::slug (https://laravel.com/docs/5.8/helpers#method-str-slug) */'slugger' => null, ];
Encontrará la documentación en https://docs.spatie.be/laravel-tags/v4.
¿Te encuentras atrapado usando el paquete? ¿Encontraste un error? ¿Tiene preguntas generales o sugerencias para mejorar el paquete laravel-tags
? No dudes en crear un problema en GitHub; intentaremos solucionarlo lo antes posible.
Si encuentra un error relacionado con la seguridad, envíe un correo electrónico a [email protected] en lugar de utilizar el rastreador de problemas.
Copie phpunit.xml.dist
a phpunit.xml
y complete las credenciales de su base de datos.
Ejecute composer test
.
Consulte CHANGELOG para obtener más información sobre los cambios recientes.
Consulte CONTRIBUCIÓN para obtener más detalles.
Si encuentra un error relacionado con la seguridad, envíe un correo electrónico a [email protected] en lugar de utilizar el rastreador de problemas.
Eres libre de utilizar este paquete, pero si llega a tu entorno de producción, te agradeceremos mucho que nos envíes una postal desde tu ciudad natal, mencionando cuál de nuestros paquetes estás utilizando.
Nuestra dirección es: Spatie, Kruikstraat 22, 2018 Amberes, Bélgica.
Publicamos todas las postales recibidas en el sitio web de nuestra empresa.
Freek Van der Herten
Todos los contribuyentes
La Licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.