MVC - Codeigniter - Просмотр разговора с моделью
В большинстве постов, которые я видел в Stackru, посвященных архитектуре MVC, люди говорили, что об этой модели следует сообщать только с контроллера, а не из представления.
Я немного запутался по этому поводу, потому что, когда вы Google MVC: - http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller- http://i.msdn.microsoft.com/dynimg/IC108622.gif графики, по-видимому, указывают на наличие связи от вида непосредственно к модели.
Конкретное приложение, для которого я задаюсь вопросом, - это иерархическое окно выбора Ajax/jQuery, подобное приведенному здесь http://kotowicz.net/jquery-option-tree/demo/demo.html. После каждого выбора я думал о получении данных следующей коробки от модели. Я использую платформу Codeigniter.
Просто после некоторой экспертизы вокруг лучшей практики здесь.
2 ответа
Когда у вас есть XHR-ориентированное приложение, имеет смысл фактически иметь две триады MVC. Один для внешнего интерфейса и один для внутреннего. Фронт-энд рассматривал бы внутренний MVC как просто источник данных (так же, как структуры абстракции данных на уровне модели бэк-энда обрабатывают базу данных, кэш и другие формы хранения).
По сути, ваше "приложение ajax" не просматривается. Это должно быть полностью реализованное приложение. Конечно, в этом есть смысл, если вы на самом деле создаете большое приложение на базе XHR.
Обычно то, что вы видите в браузере, НЕ является представлением. Это просто ответ, созданный представлением. В контексте сети пользователь приложения MVC является веб-браузером.
Источник: Википедия
Диаграмма выше представляет упрощенный поток информации в классических MVC и Model2 MVC (также известных как "Web MVC"). Разница между ними связана с природой сети: каждый раз, когда пользователь отправляет информацию, он ожидает получить ответ. Это означает, что нет никакой двусмысленности в выборе времени. Все части триады MVC существуют только до отправки ответа. Нет смысла наблюдать за модельным слоем.
Просмотр в вашем веб-приложении фактически является экземпляром, который содержит всю логику пользовательского интерфейса и отвечает за отправку ответа в браузер. Ответ, который он создает, может быть либо HTML (созданным путем объединения нескольких шаблонов), JSON или XML-файлом. Или, может быть, просто HTTP-заголовок местоположения.
PS этот ответ может оказаться уместным для вашей учебы.
Я думаю, что изображение на второй ссылке неверно, потому что правильным способом должно быть взаимодействие контроллера с моделью. Если представление напрямую связано с моделью, это означает, что HTML-код смешан с предложениями php arge, и это ошибка.