Page 1 of 1

problems with validation class

Posted: Tue Apr 17, 2007 1:29 pm
by staar2
Im making validation class which takes $_POST variables and then add some condition to field + error message(check lenght, isset, trim and so on). Problem is that i cant figure out how to make checking machine.
Use of this should be somth like this:
$v = new Val();
$v->addField('name', 'isset|trim|isString|lenght[1-5])
->error('Problems with name field');
$v-getErrors(); -return array of errors, haven't added this to my class yet

Srry comments are in Estonian.

Code: Select all

class Val {
		
		private $_vars = array(); #$_POST muutujad
		private $_errors = array(); #errori muutuja kujul [field] => error
		
		public function __construct() {
			$this->getPost();
		}
		
		/*
		Võtame $_POST-st saadud väärtused isegi nupu omad
		*/
		private function getPost() {
			foreach($_POST as $field => $value) {
				$this->_vars[$field] = $value;
			}
		}
		
		/*
		Tagastame $_POST väärtused [field] => value
		*/
		public function returnField() {
			return $this->_vars;
		}
		
		/*
		Lisab välja ning ka sinna kuuluvad võimalused, mida kontrollida.
		Algul vaatab kas üldse selline field on olemas. Hea on kui mõlemad muutujad saaks strtolower-iga üle tehtud
		*/
		public function addField($name, $options, $delimiter='|') {
			if (array_key_exists(strtolower($name), $this->_vars)) {
				$options = explode($delimiter, $options);
				
				if (is_array($options)) {
					foreach ($options as $value) {
						//BIG PROBLEMS HERE
					}
				}else {
					
				}
			} else {
				return false;
			}
		}
		
		/*
		Lisame errori [field] => value
		*/
		private function addError($field, $value) {
			$this->_errors[$field] = $value;
		}
		
		/*
		Kontrollib kas tegu on numbrilise väärtusega, kui on siis väljastab true teisal juhul false
		*/
		private function isNum($string) {
			return is_numeric($string) ? true : false;
		}
		
		/*
		Tagasatb massiivina errorid koos field ja väärtusega
		*/
		public function getErrors() {
			return $this->_errors;
		}
	}
:roll:

Posted: Tue Apr 17, 2007 3:40 pm
by Christopher
Usually it is done with Rule classes. For example:

Code: Select all

class Rule_Isset {
     function check($value) {
          return isset($value);
     }
}

$v = new Val();
$issetRule = new Rule_Isset();
$v->addRule('name', $issetRule, 'Problems with name field');
$v->check();
$v->getErrors();