1

ZendFrameworkアプリケーションの電話番号フィールドに検証/フィルタリングを追加することを考えています。これが私がすべきことかどうかわからない。

特定の表示形式を適用できるように、ユーザーがそのような機能を持っていると役立つかもしれないと思いました。電話番号のフォーマットをデータベースに保存する必要があるのか​​、それともデータベースからいつ取得するのかがわかりません。これはそれほど重要ではないので、あまり厳密にしたくありません。123.456.7890半分の人が電話番号の形式で入力し、残りの半分が他の形式で入力しないようにしたかっただけ(123) 456-7890です。電話番号のリストに一貫性を持たせたい。それで、多分私はユーザーが彼らの番号を入力するのを助けるためにいくつかのjavascriptを使うべきですか?たぶん、すでにそれを行っているjQueryプラグインがあり、それをZend Formと統合できますか?

どう思いますか?

4

3 に答える 3

3

私のお気に入りの推奨事項の1つ:

JQuery マスク入力プラグイン

スクリーンショット

于 2009-11-19T00:30:08.227 に答える
2

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;
    }
}

電話の検証正規表現をグーグルで検索すると、特定のニーズに合わせてpreg_match()で置き換えることができる検証正規表現をいくつでも見つけることができます。

于 2009-11-19T15:59:00.133 に答える
0

電話用のカスタム バリデータを作成する必要はありません。Zend には、ローカリゼーションを使用した電話バリデーターの提案があります。まだ準備ができていませんが、正規表現バリデーターを使用できます。

//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'));
于 2010-07-02T20:57:24.093 に答える