String field validator supports empty strings
It is possible to create a field validator that will make an exception from the minimal length if the string is empty. And by "make an exception", I don't mean "throwing one".
This commit is contained in:
parent
b80ac7ee91
commit
f80d739f5d
1 changed files with 4 additions and 2 deletions
|
@ -7,20 +7,22 @@ class Validator_StringLength
|
||||||
protected $errorPrefix;
|
protected $errorPrefix;
|
||||||
protected $minLength;
|
protected $minLength;
|
||||||
protected $maxLength;
|
protected $maxLength;
|
||||||
|
protected $allowEmpty;
|
||||||
|
|
||||||
public function __construct( $errorPrefix , $minLength = 0 , $maxLength = null )
|
public function __construct( $errorPrefix , $minLength = 0 , $maxLength = null , $allowEmpty = false )
|
||||||
{
|
{
|
||||||
assert( $maxLength === null || $maxLength >= $minLength );
|
assert( $maxLength === null || $maxLength >= $minLength );
|
||||||
$this->errorPrefix = $errorPrefix;
|
$this->errorPrefix = $errorPrefix;
|
||||||
$this->minLength = $minLength;
|
$this->minLength = $minLength;
|
||||||
$this->maxLength = $maxLength;
|
$this->maxLength = $maxLength;
|
||||||
|
$this->allowEmpty = $allowEmpty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function validate( $value )
|
public function validate( $value )
|
||||||
{
|
{
|
||||||
$len = strlen( $value );
|
$len = strlen( $value );
|
||||||
if ( $len < $this->minLength ) {
|
if ( $len < $this->minLength && ( $len != 0 || ! $this->allowEmpty ) ) {
|
||||||
$template = Loader::Text( '%1$s is too short (min. %2$d characters)' );
|
$template = Loader::Text( '%1$s is too short (min. %2$d characters)' );
|
||||||
return array( sprintf( $template , $this->errorPrefix , $this->minLength ) );
|
return array( sprintf( $template , $this->errorPrefix , $this->minLength ) );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue