[TYPO3-project-formidable] Added new options for the STANDARD validator

Jerome Schneider j.schneider at ameos.com
Thu Jun 28 16:28:01 CEST 2007


Hello Manuel,

This is great job :)
I would prefer to create a new validator:DATE to include these, but it 
might be better to let it in STANDARD, as it can compare more than 
dates, right ?

What do you think ?


Manuel Rego Casasnovas a écrit :
> Hello everyone,
> 
> I've developed four new options for the STANDARD validator, this options
> are lessthan, lessequalthan, morethan and moreequalthan (like the sameas
> option).
> 
> I use this options to validate data fields, the initial date must be
> less than the final date. For example:
>         <renderlet:DATE name="initial_date">
>             <validators>
>                 <validator:STANDARD>
>                     <required message="Initial date is required" />
>                     <lessequalthan value="final_date" message="Initial
> date greater than final date" />
>                 </validator:STANDARD>
>             </validators>
>         </renderlet:DATE>
>         <renderlet:DATE name="final_date">
>             <validators>
>                 <validator:STANDARD>
>                     <required message="Final date is required" />
>                 </validator:STANDARD>
>             </validators>
>         </renderlet:DATE>
> 
> I modified the _doTheMagic function in the class
> formidable_mainvalidator. I've added the next lines:
>             if($this->oForm->_navConf("/lessthan", $aConf) !== FALSE) {
> 
>                 $lessthan =
> trim($this->oForm->_navConf("/lessthan/value/", $aConf));
> 
>                 $this->oForm->_debug(null, "VALIDATOR[" .
> $aInfos["TYPE"] . "][lessthan '" . $lessthan . "'] on '" . $sName . "',
> TYPE [" . $aElement["type"] . "]");
>                 // le champ doit �tre identique � un autre champ
>                 // on v�rifie
> 
>                 $oLessRdt = $this->oForm->aORenderlets[$lessthan];
>                
>                 $lessvalue = $oLessRdt->_flatten(
>                     $this->oForm->oDataHandler->_getThisFormData(
>                         $oLessRdt->_getName()
>                     )
>                 );
>                
>                 if(!$this->_isLessThan($value, $lessvalue)) {
>                     $message =
> $this->oForm->_getLLLabel($this->oForm->_navConf("/lessthan/message/",
> $aConf));
>                     $this->oForm->_declareValidationError($sName,
> "STANDARD:lessthan", $message);
>                 }
>             }
>            
>             if($this->oForm->_navConf("/lessequalthan", $aConf) !== FALSE) {
> 
>                 $lessequalthan =
> trim($this->oForm->_navConf("/lessequalthan/value/", $aConf));
> 
>                 $this->oForm->_debug(null, "VALIDATOR[" .
> $aInfos["TYPE"] . "][lessequalthan '" . $lessequalthan . "'] on '" .
> $sName . "', TYPE [" . $aElement["type"] . "]");
>                 // le champ doit �tre identique � un autre champ
>                 // on v�rifie
> 
>                 $oLessEqualRdt = $this->oForm->aORenderlets[$lessequalthan];
>                
>                 $lessequalvalue = $oLessEqualRdt->_flatten(
>                     $this->oForm->oDataHandler->_getThisFormData(
>                         $oLessEqualRdt->_getName()
>                     )
>                 );
>                
>                 $value = $oLessEqualRdt->_flatten($value);
>                
>                 if(!$this->_isLessEqualThan($value, $lessequalvalue)) {
>                     $message =
> $this->oForm->_getLLLabel($this->oForm->_navConf("/lessequalthan/message/",
> $aConf));
>                     $this->oForm->_declareValidationError($sName,
> "STANDARD:lessequalthan", $message);
>                 }
>             }
>            
>             if($this->oForm->_navConf("/greaterthan", $aConf) !== FALSE) {
> 
>                 $greaterthan =
> trim($this->oForm->_navConf("/greaterthan/value/", $aConf));
> 
>                 $this->oForm->_debug(null, "VALIDATOR[" .
> $aInfos["TYPE"] . "][greaterthan '" . $greaterthan . "'] on '" . $sName
> . "', TYPE [" . $aElement["type"] . "]");
>                 // le champ doit �tre identique � un autre champ
>                 // on v�rifie
> 
>                 $oGreaterRdt = $this->oForm->aORenderlets[$greaterthan];
>                
>                 $greatervalue = $oGreaterRdt->_flatten(
>                     $this->oForm->oDataHandler->_getThisFormData(
>                         $oGreaterRdt->_getName()
>                     )
>                 );
>                
>                 if(!$this->_isGreaterThan($value, $greatervalue)) {
>                     $message =
> $this->oForm->_getLLLabel($this->oForm->_navConf("/greaterthan/message/",
> $aConf));
>                     $this->oForm->_declareValidationError($sName,
> "STANDARD:greaterthan", $message);
>                 }
>             }
>            
>             if($this->oForm->_navConf("/greaterequalthan", $aConf) !==
> FALSE) {
> 
>                 $greaterequalthan =
> trim($this->oForm->_navConf("/greaterequalthan/value/", $aConf));
> 
>                 $this->oForm->_debug(null, "VALIDATOR[" .
> $aInfos["TYPE"] . "][greaterequalthan '" . $greaterequalthan . "'] on '"
> . $sName . "', TYPE [" . $aElement["type"] . "]");
>                 // le champ doit �tre identique � un autre champ
>                 // on v�rifie
> 
>                 $oGreaterEqualRdt =
> $this->oForm->aORenderlets[$greaterequalthan];
>                
>                 $greaterequalvalue = $oGreaterEqualRdt->_flatten(
>                     $this->oForm->oDataHandler->_getThisFormData(
>                         $oGreaterEqualRdt->_getName()
>                     )
>                 );
>                
>                 if(!$this->_isGreaterEqualThan($value,
> $greaterequalvalue)) {
>                     $message =
> $this->oForm->_getLLLabel($this->oForm->_navConf("/greaterequalthan/message/",
> $aConf));
>                     $this->oForm->_declareValidationError($sName,
> "STANDARD:greaterequalthan", $message);
>                 }
>             }
> 
> 
> And I've added the next functions:
>         function _isLessThan($value1, $value2) {
>             return ($value1 < $value2);
>         }
>        
>         function _isLessEqualThan($value1, $value2) {
>             return ($value1 <= $value2);
>         }
>        
>         function _isGreaterThan($value1, $value2) {
>             return ($value1 > $value2);
>         }
>        
>         function _isGreaterEqualThan($value1, $value2) {
>             return ($value1 >= $value2);
>         }
> 
> 
> On the other hand I've made calls to the _flatten function (not the
> _unFlatten), and I've needed change the two calls to the _unFlatten
> function for the _flatten function. The lines:
> http://test.kunstvaerker.dk/html/classformidable__mainvalidator.html#l00017
> http://test.kunstvaerker.dk/html/classformidable__mainvalidator.html#l00069
> 
> I think that you can add this new options to the next FORMidable release.
> 
> Best regards,
>    Rego
> 


More information about the TYPO3-project-formidable mailing list