Как проверять передаваемые значения и выводить ошибку?
У модели Book есть свойство price.
К примеру, оно должно быть строго is_int в диапазоне от 1 до 999999. Любое другое значение не должно записываться, завершать работу данной модели, выбрасывать исключение и тд.
1.
Где сделать проверку, в модели или в контроллере который вызывает setPrice?
2.
Если это была бы ActiveRecord, то где выводить ошибку о пустом свойстве price
на стадии $obj->setPrice(0)
или на стадии $obj->save();
По уму - в контроллере передается объект запроса в в валидатор, и если все ок - передать данные в модель и сохранить, если не ок - выдаем ошибку, как ее выдавать зависит от логики приложения, если запрос аяксом - вернуть ерор в жсон формате и на фронте уже колбэком чета написать юзеру. Если это пост запрос - пишем в сессию, делаем редирект гетом на форму и из сессии достаем ошибки.
Если введенные данные удовлетворяют требованиям модели - да, больше ничего не требуется. Собственно для этого к модели обычно пишутся валидаторы, ну или в небольших проектах, если лень заводить валидацию и оно не сильно много где нужно - проверяют вручную в контроллере.