2010-05-11 7 views
1

양식이있어서 사용자 정의 오류를 설정하고 싶습니다. 나는 젠드를 사용하고, 나는 다음과 같은 코드를 가지고 ... Zend_Validate_EmailAddress에 대한 setMessage가 작동하지 않습니다.

//Create validators 
$formMustBeEmail = new Zend_Validate_EmailAddress(); 
$formMustBeEmail->setMessage(array(
Zend_Validate_EmailAddress::INVALID   => "1. Invalid type given, value should be a string", 
Zend_Validate_EmailAddress::INVALID_FORMAT  => "2. '%value%' is no valid email address in the basic format [email protected]", 
Zend_Validate_EmailAddress::INVALID_HOSTNAME => "3. '%hostname%' is no valid hostname for email address '%value%'", 
Zend_Validate_EmailAddress::INVALID_MX_RECORD => "4. '%hostname%' does not appear to have a valid MX record for the email address '%value%'", 
Zend_Validate_EmailAddress::INVALID_SEGMENT => "5. '%hostname%' is not in a routable network segment. The email address '%value%' should not be resolved from public network.", 
Zend_Validate_EmailAddress::DOT_ATOM   => "6. '%localPart%' can not be matched against dot-atom format", 
Zend_Validate_EmailAddress::QUOTED_STRING  => "7. '%localPart%' can not be matched against quoted-string format", 
Zend_Validate_EmailAddress::INVALID_LOCAL_PART => "8. '%localPart%' is no valid local part for email address '%value%'", 
Zend_Validate_EmailAddress::LENGTH_EXCEEDED => "9. '%value%' exceeds the allowed length", 

그럼 내가 양식을 만들 ...

$this->addElement('text', 'email'); 
$emailElement = $this->getElement('email'); 
$emailElement 
    ->setLabel('Emailadres') 
    ->setOrder(1) 
    ->setRequired(true) 
    ->addValidator($formMustBeTest) 
    ->addValidator($formMustBeEmail) 
    ->addFilter(new Zend_Filter_StripTags()); 

을하지만 그것은 작동하지 않습니다. 나는 아직도 젠드 (Zend)가 만든 일반적인 오류를 얻는다. 누구든지 내가 뭘 잘못하고 있는지 알 수 있니? 고급의

TNX ...

답변

1

와우, 내가 너무 바보입니다 :)

$formMustBeEmail->setMessage() 

을이 하나

$formMustBeEmail->setMessages() 

이 하나가 배열

에게 기대하는 문자열을 기대한다 setMessage를 setMessages로 변경하면됩니다.

0

@iSenne, doesnt work. 오류를 표시하지 마십시오.

setMethod ('post'); $ this-> setAction ('/ index/index');

$this->addElement('submit','submit'); 
    $this->addElement('text','email'); 

    $email = $this->getElement('email'); 
    $email_validate = new Zend_Validate_EmailAddress(); 
    $email_validate->setMessages(array(
    Zend_Validate_EmailAddress::INVALID   => "1. Invalid type given, value should be a string", 
    Zend_Validate_EmailAddress::INVALID_FORMAT  => "2. '%value%' is no valid email address in the basic format [email protected]", 
    Zend_Validate_EmailAddress::INVALID_HOSTNAME => "3. '%hostname%' is no valid hostname for email address '%value%'", 
    Zend_Validate_EmailAddress::INVALID_MX_RECORD => "4. '%hostname%' does not appear to have a valid MX record for the email address '%value%'", 
    Zend_Validate_EmailAddress::INVALID_SEGMENT => "5. '%hostname%' is not in a routable network segment. The email address '%value%' should not be resolved from public network.", 
    Zend_Validate_EmailAddress::DOT_ATOM   => "6. '%localPart%' can not be matched against dot-atom format", 
    Zend_Validate_EmailAddress::QUOTED_STRING  => "7. '%localPart%' can not be matched against quoted-string format", 
    Zend_Validate_EmailAddress::INVALID_LOCAL_PART => "8. '%localPart%' is no valid local part for email address '%value%'", 
    Zend_Validate_EmailAddress::LENGTH_EXCEEDED => "9. '%value%' exceeds the allowed length", 
)); 


    $email->setLabel('Emailadres') 
     ->setOrder(1) 
     ->setRequired(true) 
     ->addValidator($email_validate) 
     ->addFilter(new Zend_Filter_StripTags()); 


} 

}