You've already forked symfony-validator
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ad1e26fb14 | |||
|
|
161741cc9e | ||
|
|
727e168312 |
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user