[英]how to validate mobile number using input filter in entity ZF2
$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”之間(包括兩端)。
每當它在所有情況下都顯示相同的消息,即使是空的
您想要使用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選項是您在其中輸入的int的值。 不是長度。
在這種情況下 :
55501015不在6到10之間(含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,
),
),
),
)
));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.