@@ -19,6 +19,11 @@ class Rules implements \IteratorAggregate
1919{
2020 use Nette \SmartObject;
2121
22+ private const NEG_RULES = [
23+ Form::FILLED => Form::BLANK ,
24+ Form::BLANK => Form::FILLED ,
25+ ];
26+
2227 /** @var Rule|null */
2328 private $ required ;
2429
@@ -154,7 +159,11 @@ public function addConditionOn(IControl $control, $validator, $arg = null)
154159 public function elseCondition ()
155160 {
156161 $ rule = clone end ($ this ->parent ->rules );
157- $ rule ->isNegative = !$ rule ->isNegative ;
162+ if (isset (self ::NEG_RULES [$ rule ->validator ])) {
163+ $ rule ->validator = self ::NEG_RULES [$ rule ->validator ];
164+ } else {
165+ $ rule ->isNegative = !$ rule ->isNegative ;
166+ }
158167 $ rule ->branch = new static ($ this ->parent ->control );
159168 $ rule ->branch ->parent = $ this ->parent ;
160169 $ this ->parent ->rules [] = $ rule ;
@@ -293,10 +302,10 @@ private function adjustOperation(Rule $rule): void
293302 $ name = strncmp ($ rule ->validator , ': ' , 1 ) ? $ rule ->validator : 'Form: ' . strtoupper ($ rule ->validator );
294303 trigger_error ("Negative validation rules such as ~ $ name are deprecated. " , E_USER_DEPRECATED );
295304 }
296- if ($ rule ->validator === Form:: FILLED ) {
297- $ rule ->validator = Form:: BLANK ;
305+ if (isset ( self :: NEG_RULES [ $ rule ->validator ]) ) {
306+ $ rule ->validator = self :: NEG_RULES [ $ rule -> validator ] ;
298307 $ rule ->isNegative = false ;
299- trigger_error ('Replace negative validation rule ~Form::FILLED with Form::BLANK. ' , E_USER_DEPRECATED );
308+ trigger_error ('Replace negative validation rule ~Form::FILLED with Form::BLANK and vice versa . ' , E_USER_DEPRECATED );
300309 }
301310 }
302311
0 commit comments