У меня есть 2 модели, мне нужно чтобы валидация проверила по определенным условиям, не получается реализовать. Валидация должна проверять сумма которая пришла не должна превышать сумму которая указана к оплате, чтобы не было сдачи. Сумму внесение указывает пользователь. В контроллере вот как реализвал
public function actionFinancy($oplata, $sum)
{
$validat = new DynamicModel(compact('oplata', 'sum'));
$validat->addRule([['oplata', 'sum'], 'number', 'when' => function($oplata, $sum){
return $oplata <= $sum;
}])->validate();
if ($validat->hasErrors()){
return 'Сумма превышает всего суммы';
}
}
public function actionDraft($id)
{
$model = $this->findModel($id);
$financy = new Financy();
$validate = $this->actionFinancy($model->oplata, $financy->sum);
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', 'Заказ был закрыт');
}
}
return $this->redirect(['admin']);
}
return $this->renderAjax('draft', [
'model' => $model,
'financy' => $financy,
]);
}
Просто получаю ошибку Missing argument 2 for yii\base\DynamicModel::addRule(), called in C:\OpenServer\domains\crm\frontend\controllers\ZakazController.php on line 990 and defined
Не пойму как можно это все реализовать?