Czyli lepiej by było :
include_once('class.form_validator.php');
$val = new FormValidator;
$val->validate($_POST['email'], 'Pole email jest wymagane i nie może pozostać puste', 'req');
$val->validate($_POST['email'], 'Pole email musi mieć minimum 10 znaków długości', 'min', 10);
$val->validate($_POST['email'], 'Pole email zawiera błędny email', 'email');
if($val->is_valid()) {
}else {
$val->get_errors();
}
(IMG:
style_emoticons/default/questionmark.gif)
Ok. Poprawiłem trochę klasę. Teraz wygląda tak:
(Proszę o opinię i porady)
<?
class FormValidator {
private $errors = array(); private $field;
private $label;
### FILTRY ###
public function email($message = '') {
$message = (empty($message)) ?
'Pole %s nie zawiera adresu email.' : $message; if(!filter_var($this->field, FILTER_VALIDATE_EMAIL)) {
$this->register_error($message);
}
return $this;
}
public function required($message = '') {
$message = (empty($message)) ?
'Pole %s jest wymagane i nie może pozostać puste.' : $message; $this->register_error($message);
}
return $this;
}
public function numeric($message = '') {
$message = (empty($message)) ?
'Pole %s może zawierać wyłącznie znaki numeryczne.' : $message; $this->register_error($message);
}
return $this;
}
public function minlength($minlen, $message = '') {
$message = (empty($message)) ?
'Pole %s może mieć minimalną długość '.$minlen.'.' : $message; $this->register_error($message);
}
return $this;
}
public function maxlength($maxlen, $message = '') {
$message = (empty($message)) ?
'Pole %s może mieć maxymalną długość '.$maxlen.'.' : $message; $this->register_error($message);
}
return $this;
}
public function length($len, $message = '') {
$message = (empty($message)) ?
'Pole %s musi mieć wartość '.$len.'.' : $message; $this->register_error($message);
}
return $this;
}
public function matches($field, $label, $message='') {
$message = (empty($message)) ?
'Pole %s nie zgadza się z polem '.$label.'.' : $message; if((string)$field !== (string)$this->field ) {
$this->register_error($message);
}
return $this;
}
### /FILTRY ###
public function validate($key, $label = '') {
$this->field = $key;
$this->label = $label;
return $this;
}
private function register_error($message) {
$message = (empty($message) ?
'%s zawiera błędy.' : $message); $label = (empty($this->label) ?
'Formularz' : $this->label); $this->errors[] = sprintf($message, $label); }
public function get_error($key) {
echo $this->errors[(int
)$key]; }
public function get_all_errors() {
foreach($this->errors as $err) {
}
}
public function is_valid() {
return (count($this->errors) < 0
) ?
TRUE : FALSE; }
}
?>
Przykład użycia:
$f = new FormValidator;
$f->validate($_POST['email'], 'Email')->email('ERROR')->maxlength(1)->required()->numeric();
if($f->is_valid()) {
}else {
$f->get_all_errors();
}
Ten post edytował moto0095 27.12.2010, 23:12:51