Проверка номера телефона / фильтрация с использованием jQuery или Zend Form? - PullRequest
1 голос
/ 19 ноября 2009

Я думаю о добавлении проверки / фильтрации в поле номера телефона моего приложения Zend Framework. Не уверен, стоит ли мне это делать или нет.

Я подумал, что пользователям может быть полезно иметь такую ​​функцию, чтобы я мог применять определенный формат отображения. Я не уверен, должно ли форматирование номера телефона храниться в базе данных или когда оно извлекается из базы данных. Я не хочу быть слишком строгим, потому что это не так важно. Я просто хотел, чтобы половина людей не вводила 123.456.7890 в качестве формата своего номера телефона, а другая половина - (123) 456-7890 в качестве другого формата. Я хочу, чтобы список телефонных номеров выглядел согласованно. Так что, может быть, мне стоит использовать какой-нибудь javascript, чтобы помочь пользователю ввести их номер? Может быть, есть плагин jQuery, который уже делает это, и я могу интегрировать его с моей формой Zend?

Что ты думаешь?

Ответы [ 3 ]

3 голосов
/ 19 ноября 2009

Одна из моих любимых рекомендаций:

JQuery Маскируемый Плагин Входа

Screenshot

2 голосов
/ 19 ноября 2009

Вы все равно захотите применить проверку на бэкэнде, так как проверку javascript можно легко обойти. Это мой плагин проверки, который заставляет +1.1234567890:

class App_Validate_Phone extends Zend_Validate_Abstract
{
    const NOT_VALID = 'phoneInvalid';

    protected $_messageTemplates = array(
        self::NOT_VALID => "Phone number '%value%' must be in the format +COUNTRYCODE.PHONENUMBER. Example: +1.4071234567"
    );

    public function isValid($value)
    {
        $this->_setValue($value);

        if (!preg_match('/^\+([0-9]+)\.([0-9]+)$/',$value)) {
            $this->_error(self::NOT_VALID);
            return false;
        }

        return true;
    }
}

Если вы используете Google для проверки телефона, регулярное выражение , вы можете найти любое количество регулярных выражений проверки, которые вы можете заменить в preg_match () для ваших конкретных потребностей.

0 голосов
/ 03 июля 2010

Вам не нужно создавать собственный валидатор для телефонов. У Zend есть предложение для валидатора телефона с использованием локализации. Пока вы еще не готовы, вы можете использовать валидатор Regex:

//Add element for phoneNumber1
$this->addElement('text', 'phoneNumber1', array(
    'label'     =>  'Primary Phone Number',
    'required'  =>  false,
));
$phone1 = $this->getElement('phoneNumber1');
$phone1->addValidator('regex', false, array('pattern' => '^[2-9][0-9]{2}-[0-9]{3}-[0-9{4}$', 'messages' => 'Enter a valid Phone Number'));
...