3 Commits
1.0.1 ... 1.0.2

Author SHA1 Message Date
ad1e26fb14 Fix required 2019-09-03 18:05:56 +02:00
Maxime Renou
161741cc9e Supports nullable 2019-07-10 11:40:45 +02:00
Maxime Renou
727e168312 Fiiiiiiix 2019-04-30 12:19:45 +02:00

View File

@@ -273,7 +273,9 @@ class Validator
{ {
foreach ($this->rules as $field => $rules) foreach ($this->rules as $field => $rules)
{ {
foreach ($rules as $rule) $this->test($field, $rule); $rules_names = array_map(function($rule) { return $rule['rule']; }, $rules);
$nullable = !in_array('required', $rules_names) && !in_array('required_file', $rules_names) && !in_array('required_files', $rules_names);
foreach ($rules as $rule) $this->test($field, $rule, $nullable);
} }
$this->validated = true; $this->validated = true;
@@ -281,7 +283,7 @@ class Validator
return (count($this->errors) == 0); return (count($this->errors) == 0);
} }
public function test($field, $rule) public function test($field, $rule, $nullable = false)
{ {
$name = $rule['rule']; $name = $rule['rule'];
$data = $rule['data']; $data = $rule['data'];
@@ -300,16 +302,16 @@ class Validator
$success = !(is_null($value)); $success = !(is_null($value));
break; break;
case 'integer': case 'integer':
$success = (filter_var($value, FILTER_VALIDATE_INT) ? true : false); $success = (filter_var($value, FILTER_VALIDATE_INT) !== false);
break; break;
case 'float': case 'float':
$success = (filter_var($value, FILTER_VALIDATE_FLOAT) ? true : false); $success = (filter_var($value, FILTER_VALIDATE_FLOAT) !== false);
break; break;
case 'boolean': case 'boolean':
$success = (filter_var($value, FILTER_VALIDATE_BOOLEAN) ? true : false); $success = (filter_var($value, FILTER_VALIDATE_BOOLEAN) !== false);
break; break;
case 'email': case 'email':
$success = (filter_var($value, FILTER_VALIDATE_EMAIL) ? true : false); $success = (filter_var($value, FILTER_VALIDATE_EMAIL) !== false);
break; break;
case 'phone': case 'phone':
$_pattern = "/^\+?\d{7,15}$/"; $_pattern = "/^\+?\d{7,15}$/";
@@ -353,7 +355,11 @@ class Validator
// (éwé c'est un switch) // (éwé c'est un switch)
} }
if (!$success) { if (!$success)
{
if ($nullable && empty($value))
return true;
$this->error($field, $name); $this->error($field, $name);
} }