Реализация фильтрации по тегам в Yii и не только

Теггирование различных элементов очень часто встречается в разработке сайтов. Сами теги реализуются просто — это отдельная таблица с названиями тегов и таблица связки многие-ко-многим между тегами и какими-то сущностями. Однако реализация фильтрации по тегам — не такая уж простая задача. Фильтровать сущности по тегам как правило приходится одним из следующих вариантов:

  • выбрать все элементы без тегов
  • выбрать элементы, имеющие все указанные теги (и возможно, другие теги)
  • выбрать элементы, имеющие один или несколько из указанных тегов (и возможно, другие теги)

Рассмотрим каждый из этих случаев и приведем пример конкретной реализации фильтрации на Yii.

Передача параметров из контроллера в javascript-файлы

Javascript во вьюхах — часто ли вы встречаете такое?
Зачастую во вьюху из 3-5 строчек html-кода вставляются портянки яваскрипта на сотни строк.
На просьбу вынести этот код в отдельный js файл — можно услышать ответ, что в коде используются php-переменные из контроллера и, поэтому, вынести этот код из в отдельный js-файл не представляется возможным.

А в общем-то это довольно просто сделать. Просто и удобно.

Далее речь пойдет о реализации для фреймворка Yii, однако аналогичный подход легко реализуем и в других фреймворках.