N°6414 Validator refactoring

New AbstractValidator class, with new method Validate
All existing validators are now children of AbstractRegexpValidator
Handle validators JS counterparts in renderers : only regexp validators are implemented client side
This commit is contained in:
Pierre Goiffon
2023-06-29 10:41:51 +02:00
parent 52049b7837
commit 6606af71ff
26 changed files with 348 additions and 247 deletions

View File

@@ -28,8 +28,8 @@ use Combodo\iTop\Form\Field\DateTimeField;
use Combodo\iTop\Form\Field\Field;
use Combodo\iTop\Form\Field\MultipleChoicesField;
use Combodo\iTop\Form\Field\TextAreaField;
use Combodo\iTop\Form\Validator\AbstractRegexpValidator;
use Combodo\iTop\Form\Validator\MandatoryValidator;
use Combodo\iTop\Form\Validator\Validator;
use Combodo\iTop\Renderer\RenderingOutput;
use Dict;
use InlineImage;
@@ -458,9 +458,14 @@ EOF
// JS Form field widget construct
$aValidators = array();
foreach ($this->oField->GetValidators() as $oValidator) {
if (false === ($oValidator instanceof AbstractRegexpValidator)) {
// no JS counterpart, so skipping !
continue;
}
$aValidators[$oValidator::GetName()] = array(
'reg_exp' => $oValidator->GetRegExp(),
'message' => Dict::S($oValidator->GetErrorMessage())
'message' => Dict::S($oValidator->GetErrorMessage()),
);
}
@@ -758,7 +763,7 @@ JS
foreach ($oField->GetValidators() as $oValidator) {
// Validator
if (get_class($oValidator) === Validator::class) {
if ($oValidator instanceof AbstractRegexpValidator) {
if (!($oField instanceof DateField || $oField instanceof DateTimeField)) { // unrecognized regular expression
$sTags .= ' pattern="'.$oValidator->GetRegExp().'" ';
}