Этот пакет предлагает тегируемое поведение для ваших моделей. После установки пакета единственное, что вам нужно сделать, это добавить признак HasTags
к модели Eloquent, чтобы сделать ее тегируемой.
Но мы не остановились на обычных возможностях тегирования, которые есть в каждом пакете. Laravel Tags поставляется с батарейками. «Из коробки» он поддерживает перевод тегов, несколько типов тегов и возможности сортировки.
Вы найдете документацию по адресу https://spatie.be/docs/laravel-tags.
Вот несколько примеров кода:
// применяем признак HasTags к моделиuse IlluminateDatabaseEloquentModel;use SpatieTagsHasTags;class NewsItem расширяет модель {используйте HasTags; // ...}
// создаем модель с некоторыми тегами $newsItem = NewsItem::create([ 'name' => 'Название статьи', 'tags' => ['first tag', 'второй тег'], //теги будут создаются, если их не существует]);// прикрепляем теги $newsItem->attachTag('третий тег');$newsItem->attachTag('третий tag','some_type');$newsItem->attachTags(['четвертый тег', 'пятый тег']);$newsItem->attachTags(['четвертый_тег','пятый_тег'],'some_type');// отсоединение тегов $newsItem->detachTag('третий тег');$newsItem->detachTag('третий тег');$newsItem->detachTag('третий тег'); tag','some_type');$newsItem->detachTags(['четвертый тег', 'пятый тег']);$newsItem->detachTags(['четвертый тег', 'пятый тег'],'some_type'); // получаем все теги модели $newsItem->tags;// синхронизируем теги $newsItem->syncTags(['first tag', 'второй ярлык']); // все остальные теги в этой модели будут отключены // синхронизация тегов с типом $newsItem->syncTagsWithType(['category 1', 'category 2'], 'categories'); $newsItem->syncTagsWithType(['тема 1', 'тема 2'], 'темы'); // получение тегов типа $newsItem->tagsWithType('categories'); $newsItem->tagsWithType('темы'); // извлекаем модели, имеющие любой из заданных теговNewsItem::withAnyTags(['first tag', 'второй тег'])->get();// извлекаем модели, имеющие все заданные тегиNewsItem::withAllTags([' первый тег', 'второй тег'])->get();// извлекаем модели, у которых нет ни одного из заданных теговNewsItem::withoutTags(['первый тег', 'второй tag'])->get();// перевод тега $tag = Tag::findOrCreate('my tag');$tag->setTranslation('name', 'fr', 'mon tag');$ tag->setTranslation('name', 'nl', 'mijn tag');$tag->save();// получаем переводы $tag->translate('name'); //возвращает мое имя$tag->translate('name', 'fr'); //возвращает тег mon (необязательный параметр локали)// удобные переводы с помощью тегируемых моделей$newsItem->tagsTranslated();// возвращает теги со свойствами slug_translated и name_translated$newsItem->tagsTranslated('fr');// возвращает теги с Свойства slug_translated и name_translated установлены для указанной локали // с использованием типов тегов $tag = Tag::findOrCreate('tag 1', 'мой тип'); // теги имеют слизни $tag = Tag::findOrCreate('еще один тег');$tag->slug; //возвращает "еще один-тег"// теги сортируются$tag = Tag::findOrCreate('my tag');$tag->order_column; //возвращает 1$tag2 = Tag::findOrCreate('другой тег');$tag2->order_column; //возвращает 2// манипулируем порядком тегов $tag->swapOrder($anotherTag);// проверяем, есть ли у модели тег $newsItem->hasTag('first tag');$newsItem->hasTag('first тег', 'некоторый_тип');
Spatie — агентство веб-дизайна, базирующееся в Антверпене, Бельгия. На нашем сайте вы найдете обзор всех наших проектов с открытым исходным кодом.
Мы вкладываем много ресурсов в создание лучших в своем классе пакетов с открытым исходным кодом. Вы можете поддержать нас, купив один из наших платных продуктов.
Мы очень признательны вам за отправку нам открытки из вашего родного города с указанием того, какой из наших пакетов вы используете. Наш адрес вы найдете на странице контактов. Все полученные открытки мы публикуем на нашей виртуальной стене открыток.
Для этого пакета требуется Laravel 8 или более поздняя версия, PHP 8 или более поздняя версия, а также база данных, поддерживающая поля json
и функции, совместимые с MySQL.
Вы можете установить пакет через композитор:
композитору требуются теги spatie/laravel-tags
Пакет автоматически зарегистрируется.
Вы можете опубликовать миграцию с помощью:
поставщик php artisan:publish --provider="SpatieTagsTagsServiceProvider" --tag="tags-migrations"
После публикации миграции вы можете создать таблицы tags
и taggables
, запустив миграцию:
миграция PHP Artisan
При желании вы можете опубликовать файл конфигурации с помощью:
поставщик php artisan:publish --provider="SpatieTagsTagsServiceProvider" --tag="tags-config"
Это содержимое опубликованного файла конфигурации:
return [/* * Данная функция генерирует URL-адрес, удобный для URL-адреса, из свойства имени тега перед его сохранением. * По умолчанию Str::slug (https://laravel.com/docs/5.8/helpers#method-str-slug) */'slugger' => null, ];
Вы найдете документацию по адресу https://docs.spatie.be/laravel-tags/v4.
Вы застряли в использовании пакета? Нашли ошибку? У вас есть общие вопросы или предложения по улучшению пакета laravel-tags
? Не стесняйтесь создавать проблему на GitHub, мы постараемся решить ее как можно скорее.
Если вы обнаружили ошибку, связанную с безопасностью, отправьте электронное письмо по адресу [email protected] вместо использования системы отслеживания проблем.
Скопируйте phpunit.xml.dist
в phpunit.xml
и введите учетные данные своей базы данных.
Запустите composer test
.
Пожалуйста, посетите CHANGELOG для получения дополнительной информации о том, что изменилось за последнее время.
Пожалуйста, смотрите ВКЛАД для получения подробной информации.
Если вы обнаружили ошибку, связанную с безопасностью, отправьте электронное письмо по адресу [email protected] вместо использования системы отслеживания проблем.
Вы можете свободно использовать этот пакет, но если он попадет в вашу производственную среду, мы будем очень признательны, если вы отправите нам открытку из вашего родного города с указанием того, какой из наших пакетов вы используете.
Наш адрес: Spatie, Kruikstraat 22, 2018, Антверпен, Бельгия.
Все полученные открытки мы публикуем на сайте нашей компании.
Фрик Ван дер Хертен
Все участники
Лицензия MIT (MIT). Пожалуйста, смотрите файл лицензии для получения дополнительной информации.