2011-12-15 4 views
0

Я очень новичок в MVC.Модель или контроллер съемки?

Я использую CodeIgniter для создания платформы, когда люди могут отправить опрос, который затем помещается в базу данных для использования позже в панели инструментов для пользователей.

Теперь я немного смущен, как бы создать этот опрос? Могу ли я создать контроллер или модель? Использую ли я как контроллер, создающий форму, так и модель для отправки данных в базу данных?

Могу ли я взаимодействовать с моей базой данных непосредственно в контроллере?

ответ

0

Модель Обычно таблицу базы данных представляет собой модель. Например, если у вас есть таблица с именем «опросы», вы захотите иметь класс surveys_model, который позволяет выполнять операции на уровне таблицы в этой таблице (выбирать, вставлять, обновлять, удалять и т. Д.).

Затем вы можете создать другую модель для представления одной строки в этой таблице, названной survey_model (обратите внимание, что это единственное число). Обычно этот класс имеет свойства, которые соответствуют 1-к-1 со столбцами в таблице. В этой модели вы можете применять бизнес-правила. Например, если вы не хотите, чтобы опрос содержал один и тот же вопрос дважды, вы можете добавить логику, чтобы проверить, существует ли вопрос при добавлении нового вопроса.

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

Вы также можете пропустить отображение и работать с результатом db напрямую (для чтения/вывода). Когда вы хотите записать данные, вы просто передаете данные в виде параметров или в виде массива в модель уровня таблицы.

View Представление содержит код переднего конца (HTML/CSS/JS) для отображения формы пользователю. Если пользователь смотрит на существующее исследование (скажем, для целей редактирования), тогда модель должна быть доступна для просмотра (или, по крайней мере, некоторых данных из модели).

Единственная логика здесь должна быть для целей отображения. Например, покажите один блок текста в определенном состоянии и еще один блок текста в другом состоянии (но если весь вывод является условным, его следует разделить на 2 представления, и логику следует перенести на контроллер для загрузки правильный вид).

Контроллер Это то, что контролирует просмотр, какие модели загружаются и какие данные передаются в представление. Вы можете передать всю модель или просто некоторые данные из модели.

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

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

Вы можете перемещать логику из контроллеров и в библиотеки. Таким образом, вы можете поддерживать контроль над вашими контроллерами и группировать свою логику, не беспокоясь о влиянии на маршрутизацию.

Для функций, которые вам понадобятся во всем мире, для которых не требуется класс, вы можете поместить их в помощники . Вы можете просмотреть встроенные помощники CI, чтобы просмотреть типы функций, которые принадлежат вспомогательным файлам.

+0

Это отличная информация, вы действительно очистили все это для меня. – Aaron

0

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

0

с использованием контроллера или нет для доступа к базе данных это не проблема, только вернувшись к концепции mvc first, mvc основан на модели (для обработки hadle с базой данных), представлении (для просмотра страницы) и контроллера чтобы контролировать то, что мы делаем с моделью и представлением, поэтому мне было интересно использовать модель или нет, это не проблема для создания какого-либо приложения с помощью Codeigniter, просто мы должны вернуться к базовой концепции, если вы хотите сделать это с помощью MVC, но если нет, то тоже хорошо

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