Я использую PHP Codeigniter atm. Я прочитал пару сообщений, в которых подчеркивается «Толстая модель и тонкий контроллер», и что модель должна обрабатывать всю бизнес-логику, методы, которые напрямую связаны с базой данных и контроллерами, напрямую связаны с пользовательским вводом. Следуя этим правилам, представляется необходимым передать данные массива $ _POST косвенно для моделирования через контроллер. Но иногда это гораздо более прямолинейно и почти необходимо обрабатывать пользовательские данные непосредственно в контроллере.совет по дизайну MVC, генерировать представления в контроллере
Также класс form_validation класса CI не позволяет вам устанавливать настраиваемые сообщения об ошибках в файле form_validation.php в файле конфигурации. Для этого нам нужно написать методы call_back. Но если мы будем писать методы call_back для каждого поля, контроллер будет получать «fat», а также почему я должен использовать класс form_validation в первую очередь.
Другое дело, что часто иногда я нахожу необходимость генерировать контент в соответствии с базой данных и пользовательским вводом и т. Д. Но делать это в контроллере, похоже, противоречит «разделению логики и презентации». Например, у CI есть помощник формы и таблицы, разбиение на страницы и т. Д. Это все материалы презентации. И записывая их в контроллер, вы снова будете делать контроллеры жирными. Поэтому, я думаю, я должен написать методы контроллера для создания представлений или написать модель или библиотеку для работы с презентацией?
Буду признателен за полезные советы и рекомендации по общему подходу MVC. Спасибо.
Ну, дело в том, что CodeIgniter не имеет ничего общего с MVC (кроме использования его в качестве инструмента маркетинга). Что касается «проверки формы», то в правильной настройке MVC вы должны (и будете) иметь возможность отделять уровень представления от уровня модели. Не имеет значения, что данные поступают из html-формы. Правила проверки ** ARE ** часть бизнес-правил. Вот почему это должно происходить * внутри * слоя модели.В частности - внутри [объектов домена] (http://c2.com/cgi/wiki?DomainObject). –