Вопрос по MVC. Где выполнять проверку?
Все что касается валидации / проверки данных должно уходить в модель. Если же вам нужно проверять, валидная корзина (на верхнем более абстрактном уровне), то выполняйте эту проверку в контроллере. 

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

PS удачи и успехов в вашем не легком деле :)
В контроллере смотреть на результат выполнения cart.addProduct (true/false) и выводить ошибку при рендеринге вьюхи, если есть такая необходимость.