2015-10-19 32 views
0
$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, 
       ), 
      ), 
     ), 
    ) 
)); 

它顯示驗證的手機號碼:如何在實體使用輸入濾波器ZF2

的輸入不是「6」和「10」之間(含)。

每次它表明當你的驗證一個整數,選項之間都值了詮釋你輸入甚至有空

+0

免責聲明:實際上並沒有使用它,但如果你想驗證一個實際的數字是根據本地的有效數字,那麼可能值得看看'zendframework \ i18n'包,特別是'PhoneNumber'驗證器 - > https://github.com/zendframework/zend-i18n/blob/master/src/Validator/PhoneNumber.php不幸的是,它似乎沒有記錄在手冊中,但單元測試可能有助於弄清楚如何使用它,請參閱 - > https://github.com/zendframework/zend-i18n/blob/master/test/Validator/PhoneNumberTest.php – Crisp

回答

0

在所有情況下相同的消息。不是它的長度。

在這種情況下:

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, 
       ), 
      ), 
     ), 
    ) 
)); 
1

你要打算使用the ZF2 StringLength validator代替:

$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, 
       ), 
      ), 
     ), 
    ) 
)); 

由於你會發現我會建議在這種情況下將電話號碼作爲字符串處理。