88use Bow \Validation \Rules \DatabaseRule ;
99use Bow \Validation \Rules \DatetimeRule ;
1010use Bow \Validation \Rules \EmailRule ;
11+ use Bow \Validation \Rules \NullableRule ;
1112use Bow \Validation \Rules \NumericRule ;
1213use Bow \Validation \Rules \RegexRule ;
1314use Bow \Validation \Rules \StringRule ;
@@ -21,6 +22,7 @@ class Validator
2122 use NumericRule;
2223 use StringRule;
2324 use RegexRule;
25+ use NullableRule;
2426
2527 /**
2628 * The Fails flag
@@ -63,6 +65,7 @@ class Validator
6365 * @var array
6466 */
6567 protected array $ rules = [
68+ 'Nullable ' ,
6669 'Required ' ,
6770 "RequiredIf " ,
6871 'Max ' ,
@@ -147,21 +150,8 @@ public function validate(array $inputs, array $rules): Validate
147150 * Formatting and validation of each rule
148151 * eg. name => "required|max:100|alpha"
149152 */
150- foreach ($ rules as $ key => $ rule ) {
151- foreach (explode ("| " , $ rule ) as $ masque ) {
152- // In the box there is a | super flux.
153- if (is_int ($ masque ) || Str::len ($ masque ) == "" ) {
154- continue ;
155- }
156-
157- // Mask on the required rule
158- foreach ($ this ->rules as $ rule ) {
159- $ this ->{'compile ' . $ rule }($ key , $ masque );
160- if ($ rule == 'Required ' && $ this ->fails ) {
161- break ;
162- }
163- }
164- }
153+ foreach ($ rules as $ field => $ rule ) {
154+ $ this ->checkRule ($ rule , $ field );
165155 }
166156
167157 return new Validate (
@@ -170,4 +160,29 @@ public function validate(array $inputs, array $rules): Validate
170160 $ this ->errors
171161 );
172162 }
163+
164+ /**
165+ * Check atomic rule
166+ *
167+ * @param string $rule
168+ * @param string $field
169+ * @return void
170+ */
171+ private function checkRule (string $ rule , string $ field ): void
172+ {
173+ foreach (explode ("| " , $ rule ) as $ masque ) {
174+ // In the box there is a | super flux.
175+ if (is_int ($ masque ) || Str::len ($ masque ) == "" ) {
176+ continue ;
177+ }
178+
179+ // Mask on the required rule
180+ foreach ($ this ->rules as $ rule ) {
181+ $ this ->{'compile ' . $ rule }($ field , $ masque );
182+ if ($ rule == 'Required ' && $ this ->fails ) {
183+ break ;
184+ }
185+ }
186+ }
187+ }
173188}
0 commit comments