New validator for compare one field with summ of another fields.
class FieldSummValidator extends CValidator
{
public $summFields = '';
protected function validateAttribute($model,$attribute)
{
$value=$model->$attribute;
if($value===null || $value==='')
return;
$summ = 0;
foreach(explode(', ', $this->summFields) as $field) {
$summ += $model->{$field};
}
$valid = $summ == $value;
if (!$valid) {
$this->addError($model,$attribute,
'This field must be must be equal summ of data fields (' . $this->summFields . '). Summ: ' . $summ);
}
}
}
Using:
public function rules()
{
...
array('ZG', 'ext.FieldSummValidator', 'summFields'=> 'ZM1, ZM2, ZM3, ZM4, ZM5, ZM6, ZM7, ZM8, ZM9, ZM10, ZM11, ZM12'),
...