$inputFilter->add($factory->createInput(
array(
'name' => 'phone',
'required' => true,
'filters' => array(
array('name' => 'Int'),
),
'validators' => array(
array(
'name' => 'Between',
'options' => array(
'min' => 10,
'max' => 11,
),
),
),
)
));
显示了:
输入不在'6'到'10'之间,包括'6'和'10'。
每次在所有情况下都显示相同的消息,即使是空的
您想要使用ZF2 StringLength
验证器:
$inputFilter->add($factory->createInput(
array(
'name' => 'phone',
'required' => true,
'filters' => array(
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'min' => 10,
'max' => 11,
),
),
),
)
));
如您所见,我建议在这种情况下将电话号码作为字符串处理。
当您验证一个整数时,between选项是您在那里输入的整型值。而不是它的长度
在本例中:
55501015不包括在6到10之间。
7。
你的验证器之间看起来像这样:
public function isValid($value)
{
$this->setValue($value);
if ($this->getInclusive()) {
if ($this->getMin() > $value || $value > $this->getMax()) {
$this->error(self::NOT_BETWEEN);
return false;
}
} else {
if ($this->getMin() >= $value || $value >= $this->getMax()) {
$this->error(self::NOT_BETWEEN_STRICT);
return false;
}
}
return true;
}
不是检查长度,而是检查值。
另外,如果它是空的,你的int值显然不在6或10之间,所以这对我来说不是问题,如果你想显示值不能为空,你可以使用validatorChain中的另一个验证器。
你必须把它作为字符串和控制可能通过自定义验证器与正则表达式在这个字符串上,如下所示:
$inputFilter->add($factory->createInput(
array(
'name' => 'phone',
'required' => true,
'filters' => array(
array('name' => 'StripTags'), // don't forget this one
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'min' => 10,
'max' => 11,
),
),
),
)
));