@hollanditkzn

Как реализовать валидация которая проверяет условие из 2 моделей?

Мне нужно проверить в моделе превышает данная атрибут не должно превышать атрибута другой моделе. То есть есть в одной моделе всего сколько стоит заказ $oplata, и во второй моделе есть сколько было внесена сумма, то есть финансовый отчет $sum.
Мне нужно чтобы сумма не превышала стоимости заказа, сделать валидацию
Делал следующим образом
public function actionDraft($id)
    {
        $model = $this->findModel($id);//Модель заказа
        $financy = new Financy();//модель финансы, доходи рсход

        if ($financy->load(Yii::$app->request->post()) && $financy->validate()){
            if (!$financy->save()){
                print_r($financy->getErrors());//Если не прошла проверку выводит ошибку
            } else {
                $model->fact_oplata = $model->fact_oplata + $financy->sum;//фактически сколько заплатили за заказ + с суммой внесений. То есть может вначале была предоплата, а в конце клиент полностью оплатил сумму
                if ($model->oplata === $model->fact_oplata){//если все ровно, то проводит заказ на закрытие
                    $model->action = 0;
                    $model->save();
                    Yii::$app->session->addFlash('update', 'Заказ был закрыт');
                } else {//Если нет, то выводит ошибку в валидации, вот тут у меня ступор получился
                    $financy->addError('Сумма не должно превышать всего');//создает ошибку
                    print_r($financy->getErrors());//выводит ошибку
                }
            }
            return $this->redirect(['admin']);
        }

        return $this->renderAjax('draft', [
            'model' => $model,
            'financy' => $financy,
        ]);
    }

Пробовал сделать и так throw new NotFoundHttpException('Сумма не должно превышать всего');
Только не совсем это подходит
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
А почему у Вас экшен валидацией занимается, а не модель? Вот же валидатор есть для этого:
www.yiiframework.com/doc-2.0/yii-validators-compar...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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