Как избежать вздутия кода контроллера в CodeIgniter? - PullRequest
2 голосов
/ 24 ноября 2011

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

Например, у меня есть метод контроллера "save", который:

  • ищет входные данные
  • запускает валидатор для данных
  • если входные данные действительны, загружает соответствующую модель, устанавливает ее поля для входных значений и вызывает ее save() метод
  • если входные данные неверны, подготавливает данные для повторной загрузки формы редактирования, показывает форму

Вся эта последовательность создает беспорядок в линейном коде. Я хотел бы отделить это как-то. Переместить ли часть проверки в модель? Звучит неправильно? Создать ли специальный «библиотечный» класс для обработки ввода?

В Asp.Net MVC это было бы лучше, поскольку они реализовали шаблон «связывания объектов». Следовательно, валидация и привязка поля модели исчезают, и контроллер становится намного легче. Есть ли что-то похожее для CodeIgniter?

Ответы [ 2 ]

2 голосов
/ 24 ноября 2011

Широко распространено мнение о том, что контроллеры выполняют валидацию, я делаю их в модели в соответствии с принципом «держите ваши модели толстыми, контроллеры тонкими и тупыми».

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

1 голос
/ 24 ноября 2011

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

Вы должны использовать как можно больше кода, то есть валидаторы, фильтры и т. Д.

...