Мне нужно сравнить значение 2 атрибута в модели, и только если первое значение ниже второго значения формы может validate.I попробовать с ниже кода, но он не работал.yii2 пользовательская проверка не работает
контроллер
public function actionOpanningBalance(){
$model = new Bill();
if ($model->load(Yii::$app->request->post())) {
$model->created_at = \Yii::$app->user->identity->id;
$model->save();
}else{
return $this->render('OpanningBalance', [
'model' => $model,
]);
}
}
Модель
public function rules()
{
return [
[['outlet_id', 'sr_id', 'bill_number', 'bill_date', 'created_at', 'created_date','bill_amount','credit_amount'], 'required'],
[['outlet_id', 'sr_id', 'created_at', 'updated_at'], 'integer'],
[['bill_date', 'd_slip_date', 'cheque_date', 'created_date', 'updated_date','status'], 'safe'],
[['bill_amount', 'cash_amount', 'cheque_amount', 'credit_amount'], 'number'],
[['comment'], 'string'],
['credit_amount',function compareValue($attribute,$param){
if($this->$attribute > $this->bill_amount){
$this->addError($attribute, 'Credit amount should less than Bill amount');
}],
[['bill_number', 'd_slip_no', 'bank', 'branch'], 'string', 'max' => 225],
[['cheque_number'], 'string', 'max' => 100],
[['bill_number'], 'unique']
];
}
}
Это происходит в функции валидатор, но не добавляет ошибку, как я хотел
$ this-> addError ($ attribute, «Сумма кредита должна быть меньше, чем Bill крепление ');
Кто-нибудь может мне помочь?
Вы должны просто называть '$ model-> validate()' ... – soju
вы имеете в виду add like if ($ model-> validate()) {"save model"} Я сделал, но не сработал. –
удалить имя функции 'comparevalue'. –