Разве плохо использовать модель непосредственно из представления в codeigniter? - PullRequest
4 голосов
/ 06 июня 2010

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

Ответы [ 3 ]

5 голосов
/ 06 июня 2010

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

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

3 голосов
/ 06 июня 2010

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

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

0 голосов
/ 07 июня 2010

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

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

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

...