Валидация в контроллере и распределение ролей в MVC? Почитал несколько похожих вопросов, например Как и где правильно осуществлять валидацию данных в MVC? пишут что валидацией должен заниматься контроллер. Это понятно если валидировать нужно относительную простую информацию типа URL или IP и то если таких проверок много не множить же их в каждом контроллере... Напрашивается вынос в отдельный класс, назовём его Validator и просто подключение его нужных методов в контроллере.
1) К какому типу тогда будет относиться сам класс Validator? Model, Controller или что-то типа Хелпера или Middleware?
2) В системе запрашивают страницу редактирования сотрудника вида domain.com/employer/edit/123 срабатывает класс employer метод edit. Где надо проверить само существование сотрудника № 123? Я сейчас проверяю в модели, т.е. в классе employer методе edit в самом начале. Вроде бы надо вынести в контроллер, но для такой проверки нужна работа с БД, а работа контроллера чисто разруливать запросы. На ум идёт так же только создание класса Validator который с БД будет работать но он сам по себе уже полноценной моделью по сути будет.

21 Авг 2019 в 07:01
237 +1
0
Ответы
1

1) Класс Validator будет относиться скорее к типу Helper или Middleware. Он будет отвечать за валидацию данных перед их обработкой и может быть использован в разных частях приложения.

2) Для проверки существования сотрудника № 123 перед редактированием его данных можно использовать модель сотрудника. Контроллер может обратиться к модели, чтобы проверить существование сотрудника с указанным идентификатором в базе данных. Модель будет отвечать за взаимодействие с базой данных и проверку существования записи. Поэтому такая проверка логично выносится в модель. Класс Validator, который работает с базой данных, может быть избыточным для данной задачи.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир