1

プロジェクトで電話番号で検証するために以下のコードを使用しています。

$phone = new Zend_Form_Element_Text('phone', array(
      'label' => $view->_('phone'),
      'value' => '',
      'class' => 'text-size text hastip',
      'title' => $qtips_messages['key_phone'],
      'required' => true,
      'tabindex' => '13',
      'validators' => array(
                                array('Digits', false, array(
                    'messages' => array(
                        'notDigits'     => "Phone Invalid Digits, ex. 1234567890",
                        'digitsStringEmpty' => "",
                    ))),
                array('notEmpty', true, array(
                    'messages' => array(
                        'isEmpty'   =>  'Phone can\'t be empty'
                    )
                )),
                array('StringLength', false, array(10, 10, 'messages' => array(
                            'stringLengthInvalid'           => "Phone Length Invalid entry",
                            'stringLengthTooShort'          => "Phone Invalid Length , ex. 1234567890"
                    ))),
            ),
      'filters' => array('StringTrim'),
      'decorators' => $this->requiredElementDecorators,
      'description' => '<img src="'.$baseurl.'/images/star.png" alt="required" />',
      'filters' => array('StringTrim')
    ));
    $this->addElement($phone);

これは、フィールドが空、無効、長さの場合にうまく機能します。私の要件は、電話フィールドは、のようなスペースも受け入れる必要があるということです123 456 7890。これに関する親切なアドバイス。

4

1 に答える 1

2

数字バリデーターがスペースをどのように処理するかはよくわかりませんが、許可しないと思います (または、ここに投稿しないでしょう)。したがって、数字バリデーターを使用する代わりに、正規表現バリデーターに変更してください。私は正規表現が苦手なので、式を与える代わりに、電話番号のいくつかの式を含む次のページをご覧になることをお勧めします:電話番号検証のための包括的な正規表現

バリデーターを追加すると、次のようになります。

array('regex', false, array('/^[0-9 ]+$/'))

私が言ったように、私は正規表現が苦手なので、正規表現自体は完全に正確ではないかもしれませんが、そのようなバリデーターを追加すると問題が解決するはずです。

于 2012-01-18T08:31:32.967 に答える