MVC: модели взаимодействуют с представлением?

я знаю, что все проходит контроллер.

но я часто читал статьи, который говорит что-то вроде этого:

  1. пользователь взаимодействует с представлением
  2. контроллер просит, чтобы модель изменила свое состояние
  3. модель уведомляет представление, когда насыщаться изменился

я не получаю 3-й. почему, говоря, что модель уведомляет представление, когда это на самом деле уведомляет, контроллер и контроллер уведомляют представление?

5
задан Galen 27 April 2010 в 04:20
поделиться

4 ответа

Это больше похоже на настольную систему, а не на систему без отслеживания состояния, такую ​​как веб-сайт.

Но, возможно, речь идет о том, как некоторым людям нравится запрашивать модели из представления, например

<?php foreach( $usersTableGateway->getUsers() as $user ): ?>
<?php echo $user ?><br>
<?php endforeach; ?>

Мне больше нравится получать всю информацию в контроллере (готовить массив пользователей в контроллере) и передавать ее представлению из контроллера.

3
ответ дан 14 December 2019 в 08:45
поделиться

MVC - это широкая концепция, и существует множество возможных реализаций. Например, Page Controller отделяет логику от представления, как и Front Fontroller. Каждая инфраструктура MVC также имеет разные методы для отображения данных модели в представлении - например, Zend использует двухэтапный режим.

Вы могли бы установить отношения наблюдателя между объектом представления и «моделью» (что само по себе является действительно сложным зверем), но я думаю, что этот аспект шаблона MVC больше связан с исходным контекстом шаблона. - т.е. точка Галена выше

2
ответ дан 14 December 2019 в 08:45
поделиться

Я действительно иногда видел, как MVC описан таким образом или нарисован таким образом. Я бы не сказал, что это правильно, но я думаю, что это происходит из многих реализаций, которые явно или неявно объединяют контроллер и модель вместе.

Если концептуальное разделение фреймворка между контроллером и моделью не так ясно, как должно быть, то часть о том, что «модель уведомляет представление, когда его состояние изменилось», на самом деле является битом контроллера, который случайно находится в модель.

В конце концов, MVC - это руководство, которое в основном зависит от четкого разделения задач. Если фреймворк, который вы используете, описывает вещи именно так ... ну, на самом деле это не MVC. Это может сработать, но также может произойти непредвиденный или даже незамеченный сбой.

1
ответ дан 14 December 2019 в 08:45
поделиться

Если ваше представление непосредственно слушает вашу модель, это не нарушает принципов MVC (см. здесь ). ASAIK: одно твердое правило MVC состоит в том, что на самом деле у вас есть толстая слепая модель, которая охраняет данные и бизнес-логику и не знает о других частях системы. Как разграничены представления и контроллеры, а также их отношения с моделью определены менее строго.

1
ответ дан 14 December 2019 в 08:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: