304 lines
6.5 KiB
PHP
304 lines
6.5 KiB
PHP
<?php
|
|
|
|
abstract class Validator
|
|
{
|
|
private $message;
|
|
|
|
public function __construct($message = null)
|
|
{
|
|
$this->message = $message;
|
|
}
|
|
|
|
public abstract function GetValidatorName();
|
|
|
|
protected function DoGetAdditionalAttributes()
|
|
{
|
|
return '';
|
|
}
|
|
|
|
public function GetMessage()
|
|
{
|
|
return $this->message;
|
|
}
|
|
|
|
public function GetAdditionalAttributes()
|
|
{
|
|
$result = '';
|
|
if (!StringUtils::IsNullOrEmpty($this->message))
|
|
StringUtils::AddStr($result,
|
|
StringUtils::Format('data-%s-error-message="%s"', $this->GetValidatorName(), $this->GetMessage()), ' '
|
|
);
|
|
StringUtils::AddStr($result, $this->DoGetAdditionalAttributes(), ' ');
|
|
return $result;
|
|
}
|
|
}
|
|
|
|
class RequiredValidator extends Validator
|
|
{
|
|
public function GetValidatorName()
|
|
{
|
|
return 'required';
|
|
}
|
|
}
|
|
|
|
class MaxValueValidator extends Validator
|
|
{
|
|
private $maxValue;
|
|
|
|
public function __construct($maxValue, $message = null)
|
|
{
|
|
parent::__construct($message);
|
|
$this->maxValue = $maxValue;
|
|
}
|
|
|
|
public function GetMessage()
|
|
{
|
|
return StringUtils::Format(parent::GetMessage(), $this->maxValue);
|
|
}
|
|
|
|
public function GetValidatorName()
|
|
{
|
|
return 'max-value';
|
|
}
|
|
|
|
protected function DoGetAdditionalAttributes()
|
|
{
|
|
return StringUtils::Format('max-value="%d"', $this->maxValue);
|
|
}
|
|
}
|
|
|
|
class MinValueValidator extends Validator
|
|
{
|
|
private $minValue;
|
|
|
|
public function __construct($minValue, $message = null)
|
|
{
|
|
parent::__construct($message);
|
|
$this->minValue = $minValue;
|
|
}
|
|
|
|
public function GetMessage()
|
|
{
|
|
return StringUtils::Format(parent::GetMessage(), $this->minValue);
|
|
}
|
|
|
|
public function GetValidatorName()
|
|
{
|
|
return 'min-value';
|
|
}
|
|
|
|
protected function DoGetAdditionalAttributes()
|
|
{
|
|
return StringUtils::Format('min-value="%d"', $this->minValue);
|
|
}
|
|
}
|
|
|
|
class RangeValidator extends Validator
|
|
{
|
|
private $minValue;
|
|
private $maxValue;
|
|
|
|
public function __construct($minValue, $maxValue, $message = null)
|
|
{
|
|
parent::__construct($message);
|
|
$this->minValue = $minValue;
|
|
$this->maxValue = $maxValue;
|
|
}
|
|
|
|
public function GetMessage()
|
|
{
|
|
return StringUtils::Format(parent::GetMessage(), $this->minValue, $this->maxValue);
|
|
}
|
|
|
|
public function GetValidatorName()
|
|
{
|
|
return 'range';
|
|
}
|
|
|
|
protected function DoGetAdditionalAttributes()
|
|
{
|
|
return StringUtils::Format('range-min-value="%d" range-max-value="%d"', $this->minValue, $this->maxValue);
|
|
}
|
|
}
|
|
|
|
class RangeLengthValidator extends Validator
|
|
{
|
|
private $minValue;
|
|
private $maxValue;
|
|
|
|
public function __construct($minValue, $maxValue, $message = null)
|
|
{
|
|
parent::__construct($message);
|
|
$this->minValue = $minValue;
|
|
$this->maxValue = $maxValue;
|
|
}
|
|
|
|
public function GetMessage()
|
|
{
|
|
return StringUtils::Format(parent::GetMessage(), $this->minValue, $this->maxValue);
|
|
}
|
|
|
|
public function GetValidatorName()
|
|
{
|
|
return 'rangelength';
|
|
}
|
|
|
|
protected function DoGetAdditionalAttributes()
|
|
{
|
|
return StringUtils::Format('range-min-length="%d" range-max-length="%d"', $this->minValue, $this->maxValue);
|
|
}
|
|
}
|
|
|
|
class MaxLengthValidator extends Validator
|
|
{
|
|
private $maxValue;
|
|
|
|
public function __construct($maxValue, $message = null)
|
|
{
|
|
parent::__construct($message);
|
|
$this->maxValue = $maxValue;
|
|
}
|
|
|
|
public function GetMessage()
|
|
{
|
|
return StringUtils::Format(parent::GetMessage(), $this->maxValue);
|
|
}
|
|
|
|
public function GetValidatorName()
|
|
{
|
|
return 'max-length';
|
|
}
|
|
|
|
protected function DoGetAdditionalAttributes()
|
|
{
|
|
return StringUtils::Format('max-length="%d"', $this->maxValue);
|
|
}
|
|
}
|
|
|
|
class MinLengthValidator extends Validator
|
|
{
|
|
private $minValue;
|
|
|
|
public function __construct($minValue, $message = null)
|
|
{
|
|
parent::__construct($message);
|
|
$this->minValue = $minValue;
|
|
}
|
|
|
|
public function GetMessage()
|
|
{
|
|
return StringUtils::Format(parent::GetMessage(), $this->minValue);
|
|
}
|
|
|
|
public function GetValidatorName()
|
|
{
|
|
return 'min-length';
|
|
}
|
|
|
|
protected function DoGetAdditionalAttributes()
|
|
{
|
|
return StringUtils::Format('min-length="%d"', $this->minValue);
|
|
}
|
|
}
|
|
|
|
class CreditCardNumberValidator extends Validator
|
|
{
|
|
public function GetValidatorName()
|
|
{
|
|
return 'creditcard';
|
|
}
|
|
}
|
|
|
|
class NumberValidator extends Validator
|
|
{
|
|
public function GetValidatorName()
|
|
{
|
|
return 'number';
|
|
}
|
|
}
|
|
|
|
class DigitsValidator extends Validator
|
|
{
|
|
public function GetValidatorName()
|
|
{
|
|
return 'digits';
|
|
}
|
|
}
|
|
|
|
class UrlValidator extends Validator
|
|
{
|
|
public function GetValidatorName()
|
|
{
|
|
return 'url';
|
|
}
|
|
}
|
|
|
|
class EMailValidator extends Validator
|
|
{
|
|
public function GetValidatorName()
|
|
{
|
|
return 'email';
|
|
}
|
|
}
|
|
class CustomRegExpValidator extends Validator
|
|
{
|
|
private $regExp;
|
|
|
|
public function __construct($regExp, $message = null)
|
|
{
|
|
parent::__construct($message);
|
|
$this->regExp = $regExp;
|
|
}
|
|
|
|
protected function DoGetAdditionalAttributes()
|
|
{
|
|
return StringUtils::Format('regexp="%s"', $this->regExp);
|
|
}
|
|
|
|
public function GetValidatorName()
|
|
{
|
|
return 'regexp';
|
|
}
|
|
}
|
|
|
|
class ValidatorCollection
|
|
{
|
|
/**
|
|
* @var Validator[]
|
|
*/
|
|
private $list;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->list = array();
|
|
}
|
|
|
|
public function AddValidator(Validator $validator)
|
|
{
|
|
$this->list[] = $validator;
|
|
}
|
|
|
|
/**
|
|
* @param bool $suppressRequiredValidation
|
|
* @return string
|
|
*/
|
|
public function GetInputAttributes($suppressRequiredValidation = false)
|
|
{
|
|
$result = '';
|
|
$validationAttr = '';
|
|
|
|
foreach($this->list as $validator)
|
|
{
|
|
if ($suppressRequiredValidation && (SMReflection::ClassName($validator) == 'RequiredValidator'))
|
|
continue;
|
|
|
|
StringUtils::AddStr($validationAttr, $validator->GetValidatorName(), ' ');
|
|
StringUtils::AddStr($result, $validator->GetAdditionalAttributes(), ' ');
|
|
}
|
|
|
|
if (!StringUtils::IsNullOrEmpty($validationAttr))
|
|
StringUtils::AddStr($result, StringUtils::Format('data-validation="%s"', $validationAttr), ' ');
|
|
|
|
return $result;
|
|
}
|
|
} |