samuel
Новичок
MVC: best practicies, или как Вы делаете?
Приветствую!
Собственно, поразмышляв на досуге об особенностях реализации данной парадигмами различными CMF, я обратил внимание, что ИМХО, роль Шаблонного Метода, реализуемая Акшенами (Application Controllers) и Моделью, слегка неудобна, по причине своей разбросанности...
Народ, кто из вас выделяет саму "Стратегию" и "Шаблонный Метод" в отдельную иерархию классов и т.д. и весь control-flow осуществляется только посредством их, но никак частично в Контроллере(Акшене) и частично в Моделе
... что вы думаете по поводу такого подхода?
... как лично вы делаете?
Спасибо.
Приветствую!
Собственно, поразмышляв на досуге об особенностях реализации данной парадигмами различными CMF, я обратил внимание, что ИМХО, роль Шаблонного Метода, реализуемая Акшенами (Application Controllers) и Моделью, слегка неудобна, по причине своей разбросанности...
Народ, кто из вас выделяет саму "Стратегию" и "Шаблонный Метод" в отдельную иерархию классов и т.д. и весь control-flow осуществляется только посредством их, но никак частично в Контроллере(Акшене) и частично в Моделе
... что вы думаете по поводу такого подхода?
... как лично вы делаете?
Спасибо.


Я не говорю что размазывать контроллер на модель и вью это хорошо. Я говорю что контроллер строится на основе модели (если это можно сделать, то почему бы этим не воспользоваться). В моем контроллере базовый получает экземпляр устойчивого класса, и на основе состава его атрибутов формирует реквизиты формы. Однако это не модель. Два отдельных этапа toModel и toForm непосредственно взаимодействуют с моделью. Все остальное манипулирует реквизитами. Это базовый контроллер. Любое поведение модели, которое нам не подходит, переопределяется в конечном контроллере унаследованном от базового. В наследнике можно сделать из реквизита, который представляет ссылочный атрибут модели, реквизит типа список и заполнить его в виде удобном для восприятия пользователем. Вот такое и аналогичное поведение у меня постепенно выделяется в отдельную категорию - контейнер. Т.е. помимо реквизитов еще и все необходимые для работы контроллера механизмы - потому что экшены почти всегда используют одни и те же методы контроллера. Грубо говоря ActionPreset вызывает только валидацию, без трансляции в модель и фиксации изменений, а ActionDelete выполняет только инициализацию (позицирование на экземпляре устойчивого объекта) и его удаление. Опять же позицирование на уровне контроллера, а удаление реализовано на уровне модели. Экшены только разруливают когда что делать. Эти же самые экшены легко биндятся к реквизитам, -> инициировать экшн можно изменив определенный реквизит в представлении. Вот так организуется фидбек.