Yii2 Taggable Behavior: делаем теги легко и быстро

Просматривая недавно twitter-ленту мой глаз наткнулся на интересное поведение для Yii2 – yii2-taggable-behavior. Удобная вещь для организации тегов на сайте. Использует jQuery плагин – tagEditor. Ниже описание, как использовать это поведение.

taggable_demo

Итак, еще раз, yii2-taggable-behavior позволяет нам реализовывать функционал тегов на сайте, связывая между собой две ActiveRecord модели. Теги могут сортироваться, кстати. Ну, по порядку.

Установка

Как и все в современном PHP мире, это поведение устанавливается через composer. Нужно добавить в composer.json следующее:

или же просто запустить в консоли:

Описание структуры

Пакет состоит из 5 классов:

  • TagBehavior – добавляет ActiveRecord модели поведение тега;
  • TaggableBehavior – это поведение назначается той сущности, которую мы хотим тегировать (статьи например);
  • TagEditor – виджет для манипуляции тегами;
  • TagSuggestAction – action для автокомплита, который используется в виджете.
  • TagEditorAsset – ну и asset-класс, который определяет статику (css, js, images…) для виджета

 

Настройка

Допустим мы имеем класс Article (ActiveRecord Model), к которому хотим добавить теги. Теги у нас представлены другой ActiveRecord моделью – Tag . Обе эти модели связаны через промежуточную табличку в базе, так как имеют связь типа “многие-ко-многим”.

Модель Tag имеет следующие поля:

  • id – primary key
  • name – имя тега
  • count – счетчик, сколько статей с этим тегом

Связующая табличка

Как мы уже сказали, модели Article и Tag связаны через промежуточную таблицу, так как имеют связь “многие-ко-многим”. Назовем нашу промежуточную табличку article_tags . Она будет иметь следующие поля:

  • model_id – primary key тегируемой модели, в данном случае Article
  • tag_id – id тега
  • ord – порядок тега (для сортировки)

TaggableBehavior

Добавим нашей модели Article поведение “тегируемости”.

 

TagBehavior

Добавим модели Tag поведение тега

Метод getArticles()  тут необязательный, но мы добавили. Пригодится ведь!

Отображение (View)

Отобразить теги данной статьи очень просто:

tagLinks – это виртуальный атрибут, добавленный модели поведением. Собственно ради него то мы все это и затеяли.

Редактирование

Чтобы добавлять и редактировать теги, нам так же нужно сделать TagController

TagEditor

Вьюхи создания и редактирования тегов используют супер удобный редактор.

 

Вот и все! Очень удобно, пользуемся, господа!

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *