簡體   English   中英

如何使用實體ZF2中的輸入過濾器驗證手機號碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM