Вопрос по MVC. Где выполнять проверку?

Интернет-магазин. Есть контроллер cart (корзина), есть модели cart и product. Пользователь жмет «добавить в корзину», вызывается действие add контроллера cart, которое вызывает метод addProduct модели cart. В каком месте правильнее выполнять проверку существования и наличия товара (методы модели product)? В контроллере или в моделе (или и там, и там)? При этом надо вывести пользователю информативное сообщение об ошибке.
  • Вопрос задан
  • 3788 просмотров
Решения вопроса 1
Все что касается валидации / проверки данных должно уходить в модель. Если же вам нужно проверять, валидная корзина (на верхнем более абстрактном уровне), то выполняйте эту проверку в контроллере.

А насчет различных сообщений — возвращайте из модели различные сообщения в случае неудачи и дальше их обрабатывайте в контроллере, делайте удобные проброски на вьюхи, где уже выводите в зависимости от этого различные наборы красоты :)

PS удачи и успехов в вашем не легком деле :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
dizballanze
@dizballanze
Software developer at Yandex
Существует подход thin controllers — that models, согласно которому в контроллере нужно, как можно меньше всего выполнять. В идеале чтобы контроллеры не больше 10 строк были.
Ответ написан
int03e
@int03e
В контроллере смотреть на результат выполнения cart.addProduct (true/false) и выводить ошибку при рендеринге вьюхи, если есть такая необходимость.
Ответ написан
Ваш ответ на вопрос

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

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