Задать вопрос
hostadmin
@hostadmin

Как запретить изменение некоторых данных в зависимости от статуса сущности?

Есть модель выставленных счетов. Нужно, чтобы при определенных статусах счёта (или еще каких-то данных у конкретного счёта) нельзя было менять некоторые данные, например сумму счёта. При это реализовать это исключительно средствами самой модели.

Пытался это сделать через валидаторы, но они не видят "старых" данных.
  • Вопрос задан
  • 73 просмотра
Подписаться 1 Простой 3 комментария
Решения вопроса 1
hostadmin
@hostadmin Автор вопроса
В общем, как это часто бывает, виной всему невнимательность. Оказалось, что AJAX отправлял данные на экшн, без указания id сущности, поэтому проверка была как для новой записи.
В итоге такая конструкция работает как нужно:
[['amount'], function($attribute){

                    if ( $this->$attribute != $this->getOldAttribute($attribute) ) {
                        $this->addError($attribute, \Yii::t('app', 'Нельзя изменять сумму счёта'));
                        return false;
                    }

                }, 'when'=>function($model, $attribute)
                {
                     return $model->getOldAttribute('status') != self::STATUS_IS_PENDING;
                }]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Наследование + инкапсуляция.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы