Добрый день!
Возник вопрос на который к сожалению я не смог найти ответ. Имеется ActiveController и модель. В контроллер прилетают данные в формате, отличающимся от формата БД, а так же все сущности заменены на идентификаторы в формате uuid. Т.е. при сохранении документа, в базе необходимо проставить ссылки на сущности. На данный момент система работает с переопределенными функциями для парсинга данных. Вопрос - как лучше организовать обработку таких данных?
REST data fields override
Re: REST data fields override
Например, сделать отдельные модели форм.
Re: REST data fields override
Пока тема модерировалась решил проблему предопределив в модели сеттеры для полей документа. Вопрос теперь в следующем. Корректен ли следующий код, или я опять что то не так понял. Проблема в том, что даже если мы добавляем ошибку в модель то она сохраняется без ошибок.
Код: Выделить всё
/**
* Конвертация кода объекта в его код базы
* Устанавливает значение поля partner_id для связи БД
* partner_id - поле в базе
* partnercode - код в json документе
* @param $code UUID4 идентификатор объекта
*/
public function setPartnerCode($code=null){
// Если нет кода то исключение
if(!$code) throw new HttpException(422 ,'Unacceptable partner code');
$partner = \api\models\Partner::findOne(['code'=>$code]);
// Если нет такого партнера то сообщаем модели об этом
if(!$partner){
$this->addError('partnercode', "Partner with code {$code} not found");
}
$this->partner_id = $partner->id;
Re: REST data fields override
Вызов validate() напрямую или через save() по умолчанию очищает все ошибки.