2010-06-06 2 views
4

Я знаю, что обычно данные передаются через просмотр с контроллером. однако, в настоящее время, на мой взгляд, я загружаю свою модель ($ this-> load-> model ('Db_model');), поэтому я могу использовать ее в цикле для извлечения пути изображения профиля пользователя из массива идентификаторов, который передается из контроллер. Будет ли загрузка модели db в представлении для этого сделать мой сайт более уязвимым или плохим? Для меня это, кажется, вне концепции MVC, но его рабочий атм. спасибоНеправильно ли использовать модель непосредственно из вида в codeigniter?

+0

Хороший вопрос! Я считаю, что ответ должен технически быть «да», но это так удобно, я тоже это делаю, особенно для циклирования больших и сложных наборов данных. – Kurucu

ответ

3

Хорошо, если вы что-то делаете вне MVC, это не значит, что он перестанет работать в ту же секунду. MVC - это всего лишь шаблон дизайна, который должен помочь вам в разработке и обслуживании вашего сайта. Основной принцип заключается в том, что модель должна связываться только с контроллером и просматривать также только с контроллером, поэтому ваша идея вызвать модель непосредственно из представления не является способом MVC делать вещи.

Если вам нужны дополнительные данные от модели, почему бы не получить его в контроллере и передать его в качестве другого параметра для представления, чтобы он мог легко его использовать? Вероятно, будет такой же код, и ваш код будет намного чище. Сохранение вашего кода в чистоте может показаться не таким важным, если вы помните, где все хранится, но через несколько месяцев, когда вы забыли некоторые из этих вещей, у вас может возникнуть головная боль, если вы слишком много испортите свое приложение.

5

Я согласен, но он имеет все, что связано со шкалой. Если вы разрабатываете крошечное приложение MVC, это не имеет большого значения, потому что легко контролировать все приложение. Однако, как только приложение начинает расти, или если вы создаете большее приложение, разделение MVC становится более важным.

Например, если вы используете модели в своих представлениях, это подразумевает, что команда разработчиков должна знать о моделях. Он также может препятствовать переносу представлений позже в другую структуру или замену шаблонов.

+0

Я считаю технически, если модель используется для чтения только для чтения, вы все равно можете считать ее MVC. На самом деле это звучит как хорошая идея для меня, контроллер никогда не должен знать. – Natebot

0

Посмотрите на библиотеки. Вы должны подумать о создании вспомогательного класса библиотеки для отображения изображения профиля. Затем вы можете вызвать вызов библиотеки. Затем, на ваш взгляд, вы просто сделать:

<?php $this->profile_helper->display_picture(); ?>

где profile_helper ваша библиотека классов и display_picture() ваша функция класса для отображения профиля пользователя.

Смежные вопросы