Где лучше проверять входные данные, в контроллере или в модели?

Проверять данные в контроллере, сразу после отправки их пользователем, или в моделе, перед записью в базу?
Как на ваш взгляд правильно? И по возможности посоветуйте либу для валидации входящих данных.
  • Вопрос задан
  • 462 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Данные надо проверять там, где они есть (гуглить "GRASP информационный эксперт").

В вашем случае мы говорим о "входящих данных". В контексте вопроса стало быть мы говорим о контроллере. Для модели данные тоже будут "входящими" но это уже будут данные в формате модели (например вместо строки готовый DateTime объект и т.д.)

Модель же не должна входить в "невалидное состояние" за счет бизнес правил и т.д (банально не должно быть возможности вызвать какой-то метод и сломать целостность состояния модели). А стало быть валидировать ее нет смысла.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
artgrosvil
@artgrosvil
#dev #programming #student #startups #chill
Не понял ораторов выше. Модель должна только работать с базой, всё! Больше ничего. Контроллер должен обрабатывать логику, вьюхи отображать всё это. Поэтому фильтровать нужно только в контроллере.
Ответ написан
VladimirAndreev
@VladimirAndreev
php web dev
с данными работает модель, и только модель...
по хорошему, валидировать их в setter'е в момент присвоения.
Ответ написан
Marcuzy
@Marcuzy
php разработчик
В модели, а логика простая: модель может использоваться во многих местах.
Ответ написан
Комментировать
@Aracon
Ещё такой момент: только модель знает, какие данные валидные, а какие нет. Само понятие валидных данных является частью модели.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы