Вы в корне неправильное понимание MVC, по крайней мере, как это реализовано в CI.
Все URL-адреса вашего сайта (по крайней мере, те, которые используют инфраструктуру CI) отображаются на функции (методы) в контроллерах.
http://myCIsite.com/controller/method[/var1][/var2] ...
Это не имеет значения, осуществляется доступ к URL с помощью регулярного HTTP или с помощью AJAX. Это всегда сопоставление от одного к одному. Из-за этого вы должны думать о комбинации контроллера/метода как о «веб-странице». Не думайте о представлении как веб-странице.
Модели и виды подчинены контроллерам. Контроллер делегирует им определенные обязанности - взаимодействие с базами данных для моделей и вывод страниц в представления.
Поскольку модели и представления служат только для выполнения делегированных обязанностей, их использование не требуется ни в каком данном контроллере/методе.Например, страницы справки, как правило, не нуждаются в взаимодействии с базой данных, поэтому нет модели, используемой комбинацией контроллера/метода, которая обслуживает данную страницу справки. Аналогичным образом, обработчики форм часто перенаправляются на другую страницу после завершения обработки. Таким образом, нет представления, соответствующего обработчику формы (но есть (вероятно) вид, вызываемый из контроллера/метода в перенаправленном на страницу).
Кроме того, модели и представления необязательно соответствуют друг другу с отдельными контроллерами/методами. Любая модель может быть загружена и использована из нескольких контроллеров. Аналогично, контроллер может иметь одно монолитное представление, которое используется всеми методами, или каждому методу может быть присвоено собственное представление. (Или, как я только что сказал, данный контроллер/метод вообще не может использовать вид.)
И, наконец, CI не обеспечивает строгое разделение MVC. Вы можете взаимодействовать с базой данных и эхом HTML изнутри контроллера, а CI не будет жаловаться. Тем не менее, это разделение и делегирование ответственности соблюдается, поскольку логическое разделение обязанностей делает код более легким для чтения и помогает вам следовать принципу DRY в вашей кодировке.
Основное понимание заключается в том, что «веб-страница» соответствует контроллеру/методу. Представление и модель, когда используются, обрабатывают делегированные обязанности для контроллера/метода.
* И на самом деле то, что вы говорите, нарушит наилучшую практику шаблона проектирования MVC. * Все зависит от того, какая «версия» MVC вы придерживаетесь. Есть по крайней мере 3 разных «варианта» ... Говорят, контроллер переводит модель в представление. Один говорит, что представление втягивает модель в себя. И еще один говорит, что контроллер подталкивает данные в представление (поэтому модель на 100% отделена от представления без зависимостей). Хотя я согласен с вами в том, что самое главное - быть последовательным, это не ломает MVC, чтобы заводить вещи в другом порядке. MVC - это разделение, а не отношение ... – ircmaxell
@ircmaxell: Интересно, что существует три версии этого, я говорил о шаблоне CI. Было бы здорово, если бы вы могли опубликовать ссылку, где обсуждаются эти три версии, спасибо :) – Sarfraz