2012-12-20 3 views
-1

젠드 프레임 워크를 사용하여 등록 페이지를 개발 중입니다.양식 텍스트 유효성 입력

전화 번호, 휴대폰 번호, ID 번호는 확인하고 싶은 입력란입니다. 지금까지는 Not Empty에 대해서만 유효성 검사를했습니다.

올바른 해결책을 찾을 수 없으므로 나를 도울 수 있습니다.

휴대 전화 및 모바일 입력란을 전적으로 정수로 지정합니다. 12345667 및 예를 들어, 특정 길이를 가지고. 최소 7 자리.

동일한 항목이 ID NUMBER 필드에도 적용됩니다.

이것은 지금 모습입니다 :

$phone = new Zend_Form_Element_Text('phone'); 
$phone->setLabel('Phone') 
     ->setAttribs(array('class' => 'inputtext'))  
     ->setOptions(array('size' => '50'))  
     ->setRequired(false) 
     ->addFilter('StripTags') 
     ->addFilter('StringTrim') 
     ->addValidator('NotEmpty'); 
+2

같은 유효성 검사기를 추가해야? http://framework.zend.com/manual/1.12/en/zend.form.elements.html#zend.form.elements.validators – ficuscr

+0

ficuscr - 실제로 이상하게 들릴지 모르지만 찾을 수 없거나 찾지 못했습니다. 문서에서 (분명하지만 거기에 있어야만했습니다) 여기에 링크 된 페이지 .. 감사합니다 친구! – mrGott

+1

사실 나는 그것을 믿을 수 있습니다. 나는 그 문서가 아주 잘 구성되어 있다고 생각하지 않는다. 다행히 당신이 찾고있는 것을 발견했습니다. – ficuscr

답변

1

이의 시도하고 당신에게 당신의 질문에 대한 몇 가지 대답을 보자.

당신이 이미 그것을 Zend_Form의 검증을 실현하지 않으면

이 Zend_Validate에 standard validators로 사용 된 것과 같은 검증, 당신은 일반적으로 단지 문자열 대신 새로운 전화로 클래스 이름을 사용합니다. 필터 및 Zend_Filter도 마찬가지입니다.

전화 번호에 가장 근접한 표준 유효성 검사기는 'Digits' 유효성 검사기입니다. 당신이 더 적절한 Zend_Validate_Abstract을 확장하여 자신의 유효성 검사기를 구성 찾을 수 있습니다 그러나

$phone = new Zend_Form_Element_Text('phone'); 
$phone->setLabel('Phone') 
     ->setAttribs(array('class' => 'inputtext'))  
     ->setOptions(array('size' => '50'))  
     ->setRequired(false) 
     ->addFilter('StripTags') 
     ->addFilter('StringTrim') 
     ->addValidator('NotEmpty'); 
//add digits validator , closest available to phone number in standard validators; 
$phone->addValidator('Digits'); 

. 전화 번호 유효성 검사기과 같습니다

//validates US phone numbers using Zend_Validator_Regex 
class MyNamespace_Validator_Form_Usphone extends Zend_Validate_Abstract 
{ 
    const PHONE = 'phone'; 

    protected $_messageTemplates = array(
     self::PHONE => "'%value%' is not a valid U.S. phone number. 
      Phone number must be entered in (xxx)xxx-xxxx or xxx-xxx-xxxx format." 
    ); 

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

     $isValid = true; 
     $pattern = ('/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/'); 
     if (!preg_match($pattern, $value)) { 
      $this->_error(self::PHONE); 
      $isValid = false; 
     } 
     return $isValid; 
    } 
} 

및 양식 요소에 사용되는 :

$phone->addValidator(new MyNamespace_Validator_Form_Usphone()); 
명심해야 할

한 가지 : 당신이 'Required' 같은 폼 요소를 설정하는 경우 'NotEmpty' 유효성 검사기를 사용하는 것은 대부분 setRequired()이 내부적으로 'NotEmpty'을 호출하므로 중복됩니다.

또한 일반적으로 Zend_Form 필터는 유효성 검사 전에 적용됩니다.

희망이 도움이됩니다.

0

당신은 설명서를 읽어 않았다 ... 풍자를 피하기 위해 노력하고

->addValidators(
       'StringLength', 
       true, 
       array('min' => 7, 'max' => 20,'messages' => "ID NUMBER contain at least 7 character.") 
      ); 
관련 문제