REST data fields override

Всё что касается построения API
Ответить
gfreeman
Сообщения: 3
Зарегистрирован: 2017.10.03, 15:43

REST data fields override

Сообщение gfreeman » 2017.10.03, 16:00

Добрый день!

Возник вопрос на который к сожалению я не смог найти ответ. Имеется ActiveController и модель. В контроллер прилетают данные в формате, отличающимся от формата БД, а так же все сущности заменены на идентификаторы в формате uuid. Т.е. при сохранении документа, в базе необходимо проставить ссылки на сущности. На данный момент система работает с переопределенными функциями для парсинга данных. Вопрос - как лучше организовать обработку таких данных?

Аватара пользователя
ElisDN
Сообщения: 4524
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: REST data fields override

Сообщение ElisDN » 2017.10.04, 07:41

Например, сделать отдельные модели форм.
Не забудьте пройти мастер-класс по Yii2.

gfreeman
Сообщения: 3
Зарегистрирован: 2017.10.03, 15:43

Re: REST data fields override

Сообщение gfreeman » 2017.10.04, 11:02

Пока тема модерировалась решил проблему предопределив в модели сеттеры для полей документа. Вопрос теперь в следующем. Корректен ли следующий код, или я опять что то не так понял. Проблема в том, что даже если мы добавляем ошибку в модель то она сохраняется без ошибок.

Код: Выделить всё

    /**
    * Конвертация кода объекта в его код базы
    * Устанавливает значение поля 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;

Аватара пользователя
ElisDN
Сообщения: 4524
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: REST data fields override

Сообщение ElisDN » 2017.10.04, 13:01

Вызов validate() напрямую или через save() по умолчанию очищает все ошибки.
Не забудьте пройти мастер-класс по Yii2.

gfreeman
Сообщения: 3
Зарегистрирован: 2017.10.03, 15:43

Re: REST data fields override

Сообщение gfreeman » 2017.10.09, 13:36

ElisDN писал(а):
2017.10.04, 13:01
Вызов validate() напрямую или через save() по умолчанию очищает все ошибки.
Спасибо! Ценная информация!

Ответить