Делаю проект на Yii1, некий менеджер задач на подобие битрикс24 или мегаплан. Так вот, там на станицах находятся много функциональных блоков, к примеру: календарь, фильтры, постановщики, комментарии, статусы, история и т.п. Почти весь функционал работает на ajax запросах. Когда я все сделал, мои контроллеры были переполнены экшенами и различными методами, а в следствии того что ТЗ придумывалось на ходу еще и костылями. Разумеется я старался все разделять на отдельные блоки, компоненты, классы. Итог: сложно, не красиво, костыли, много зависимостей.
Начал исправлять ситуацию, все блоки стал выносить в виджеты. Мои виджеты имеют свои ресурсы - js, css, img, и даже свои экшены (сделал инклуд с контроллера) для ajax запросов, а связи одних блоков с другими я завязал на js событиях. В итоге все стало просто и понятно. Увлекшись этой затеей я перенес почти весь проект в виджеты.
Вопрос. Правильно ли я делаю? (прокомментируйте пожалуйста)
HMVC - норм, но не в том виде в котором это сделано в Yii1. В любом случае если этот вариант понятный, проще поддерживать и меньше связанность - то да, все хорошо, так и надо. Если у вас страница состоит из независимых виджектов - логично это дело делать отдельными компонентами.
Андрей Павленко: это не плохо, просто не сильно логично, хотя суть та же. Скажем в Symfony мы из view просто делаем эдакий подзапрос к другому контроллеру, и это то как должно работать все в hmvc, а в Yii это самостоятельный компонент, который представляет из себя жирный контроллер. Да и вообще Yii1 сейчас весьма нелепо выглядит, когда он только вышел это да...