Fieldsummvalidator

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'),

...