Skip to content

Commit 221cad9

Browse files
Bug fixes
1 parent 02fd102 commit 221cad9

2 files changed

Lines changed: 40 additions & 18 deletions

File tree

src/Validation.php

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
*/
1111

1212
namespace Validator;
13+
use Exception;
1314

1415
class Validation {
1516
/**
@@ -74,8 +75,7 @@ class Validation {
7475
'in',
7576
'not_in',
7677
'equal',
77-
'not_equal',
78-
'rules'
78+
'not_equal'
7979
];
8080

8181
/**
@@ -93,10 +93,39 @@ class Validation {
9393
private $invalid_data = [];
9494

9595
function __construct(array $rules, array $messages) {
96+
// Parse validation rules
97+
$tmpRules = [];
98+
foreach($rules as $key => $value) {
99+
foreach($value as $rule => $val) {
100+
//Check rule is valid or not
101+
if(in_array($rule, $this->predefined_rules)) {
102+
$tmpRules[$key][$rule] = $val;
103+
} else {
104+
$tmpRules[$key]['rules'][$rule] = $val;
105+
}
106+
}
107+
}
96108
// Set data validation rules
97-
$this->rules = $rules;
109+
$this->rules = $tmpRules;
110+
111+
// Parse custom error messages
112+
$tmpMessages = [];
113+
foreach($messages as $key => $value) {
114+
if(is_array($value)) {
115+
foreach($value as $rule => $val) {
116+
//Check messages is valid or not
117+
if(in_array($rule, $this->predefined_rules)) {
118+
$tmpMessages[$key][$rule] = $val;
119+
} else {
120+
$tmpMessages[$key]['rules'][$rule] = $val;
121+
}
122+
}
123+
} else {
124+
throw new Exception('Error: invalid validation error messages');
125+
}
126+
}
98127
// Set data validation messages
99-
$this->messages = $messages;
128+
$this->messages = $tmpMessages;
100129
}
101130

102131
/**
@@ -155,13 +184,7 @@ private function is_valid(array $data) {
155184
foreach($this->rules as $data_key => $rules) {
156185
foreach($rules as $rule => $value) {
157186
$rule = strtolower($rule);
158-
//Check rule is valid or not
159-
if(in_array($rule, $this->predefined_rules)) {
160-
$func = "validate_".$rule;
161-
} else {
162-
$this->errors['error'] = 'Error : Invalid validation rules.';
163-
return false;
164-
}
187+
$func = "validate_".$rule;
165188
// Check data key is array or not
166189
if(strpos($data_key, '.')) {
167190
$data_keys = explode('.', $data_key);
@@ -239,7 +262,7 @@ public function errors(string $error=NULL) {
239262
* @param string $custom_rule
240263
* @return void
241264
*/
242-
private function set_error(string $data_key, array $rules, string $rule, $custom_rule=NULL) {
265+
private function set_error(string $data_key, array $rules, string $rule, string $custom_rule=NULL) {
243266
//Default error messages
244267
$this->default_messages = [
245268
'required' => $data_key.' is required.',
@@ -325,12 +348,10 @@ private function set_error(string $data_key, array $rules, string $rule, $custom
325348

326349
if(isset($this->messages[$data_key]) && is_array($this->messages[$data_key])) {
327350
//Set users custom error messages
328-
if(isset($this->messages[$data_key][$rule])) {
329-
if(is_array($this->messages[$data_key][$rule]) && isset($this->messages[$data_key][$rule][$custom_rule])) {
330-
$this->errors[$data_key] = $this->messages[$data_key][$rule][$custom_rule];
331-
} else {
332-
$this->errors[$data_key] = $this->messages[$data_key][$rule];
333-
}
351+
if(isset($this->messages[$data_key][$rule]) && $custom_rule == NULL && $rule !== 'rules') {
352+
$this->errors[$data_key] = $this->messages[$data_key][$rule];
353+
} else if(isset($this->messages[$data_key][$rule]) && is_array($this->messages[$data_key][$rule]) && isset($this->messages[$data_key][$rule][$custom_rule]) && $rule === 'rules') {
354+
$this->errors[$data_key] = $this->messages[$data_key][$rule][$custom_rule];
334355
} else {
335356
//Set default error messages
336357
if($rules[$rule] === true && is_array($this->default_messages[$rule]) && isset($this->default_messages[$rule]['true'])) {

src/Validator.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Validator;
1313
use Validator\Validation;
14+
use Exception;
1415

1516
class Validator {
1617
/**

0 commit comments

Comments
 (0)