Лучшие Практики
Виджеты представляют собой объектно-ориентированный подход к повторному использованию кода пользовательского интерфейса.
При создании виджетов, следует придерживаться основных принципов концепции MVC. В общем случае, основную логику следует располагать в классе виджета, разделяя при этом код, отвечающий за разметку в представления.
Разрабатываемые виджеты должны быть самодостаточными. Это означает, что для их использования должно быть достаточно всего лишь добавить виджет в представление. Добиться этого бывает затруднительно в том случае, когда для его функционирования требуются внешние ресурсы, такие как CSS, JavaScript, изображения и т.д. К счастью, Yii предоставляет поддержку механизма для работы с ресурсами asset bundles, который может быть успешно использован для решения данной проблемы.
В случае, когда виджет не содержит логики, а содержит только код, отвечающий за вывод разметки, он мало отличается от представления. В действительности, единственное его отличие состоит в том, что виджет представляет собой отдельный и удобный для распространения класс, в то время как представление - это обычный PHP скрипт, подходящий для использования только лишь в конкретном приложении.