Что должно идти в моделях CodeIgniter? - PullRequest
3 голосов
/ 09 августа 2010

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

То, как я сейчас настраиваю свои модели, вызывает много мусора в контроллерах для таких вещей, как проверка форм, форматирование данных. Проверка формы, загрузка файлов и форматирование данных относятся к контроллеру или модели?

Я понимаю, что этот вопрос субъективен, что должно привести к хорошей дискуссии, а не к конкретному ответу.

Ответы [ 3 ]

3 голосов
/ 09 августа 2010

У вас есть две основные дороги. Тонкий контроллер / толстая модель или тонкий контроллер / тонкая модель. В основном это то, куда вы положили большую часть взаимодействия. Я предпочитаю оставить у модели основную часть кода. Таким образом, код доступен практически на каждом контроллере и / или в lib. Если код остается на контроллере, его трудно (но не невозможно) использовать на других контроллерах.

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

Надеюсь, это поможет Vx

3 голосов
/ 09 августа 2010

Проверка формы обязательно должна быть частью модели. Я обычно представляю каждую форму как одну модель и передаю ей обработанные параметры post / get. Затем модель может предпринять любое необходимое действие на основе входных данных и использовать свойство (необязательно с получателем), чтобы сигнализировать об успехе или неудаче. В коде psuedo вы хотите, чтобы он выглядел примерно так:

class Controller
{
    function action()
    {
        $input = new Input();
        $form = new FormModel($input);
        if ($errors = $form->errors())
        {
            //load the appropriate view for the errors
        }
        else
        {
            //load the appropriate view for success with an optional redirect
        }
}
0 голосов
/ 09 августа 2010

Модель - это то, что взаимодействует с данными (чаще всего это база данных). Контроллеры используют модели для доступа к данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...