2010-06-04 15 views
5

Tôi cần thay đổi tất cả thông báo lỗi standart trên tin nhắn của mình trong Zend_Element_Text khi tôi sử dụng trình xác thực ('EmailAddress') trình xác thực này cung cấp một số thông báo khác nhau.thay đổi error_message trong Zend_Validate_EmailAddress

  • Giá trị là cần thiết và không thể để trống
  • '' không có địa chỉ email hợp lệ trong định dạng cơ bản địa phương phần @ hostname

Khi tôi đặt tùy chọn setErrorMessage ('một số của tôi văn bản lỗi ') chuỗi ký tự hiển thị trên bất kỳ lỗi nào nhiều lần.

lỗi trông giống như

  • một số văn bản lỗi của tôi
  • một số văn bản lỗi của tôi

gì cách tốt nhất để giải quyết vấn đề này? Phiên bản zf 1.10.3

+0

Tôi đã cố gắng dọn dẹp câu hỏi của bạn nhưng trong cuộc sống của tôi, tôi không thể hiểu ý bạn là gì ... * trình xác nhận này cung cấp các thông báo khác nhau và tùy chọn standatr setErrorMessage writen nhiều như yếu tố này (1 , 2,3 cùng một thông báo) '* –

+0

Xem http://framework.zend.com/manual/en/zend.validate.messages.html – salathe

+0

Tôi thấy rằng trước đây nhưng không rõ ràng của nó, tôi có thể thấy các biến tĩnh hiện tại như Zend_Validate_GreaterThan: : NOT_GREATER? – Alexandr

Trả lời

3

Các sau đây phải bao gồm tất cả các thông báo lỗi cho Zend_Validate_EmailAddress

$emailValidator = new Zend_Validate_EmailAddress(); 
$emailValidator->setMessages(
    array(
     Zend_Validate_EmailAddress::INVALID => 'Please enter in a valid email address in the format [email protected]', 
     Zend_Validate_EmailAddress::INVALID_FORMAT => 'Error with format', 
     Zend_Validate_EmailAddress::INVALID_HOSTNAME => 'Error with hostname', 
     Zend_Validate_EmailAddress::INVALID_LOCAL_PART => 'Error with Local Part', 
     Zend_Validate_EmailAddress::INVALID_MX_RECORD => 'Error with MX record', 
     Zend_Validate_EmailAddress::INVALID_SEGMENT => 'Error with Segment' 
    ) 
); 

Hãy thử sử dụng điều đó và xem các thông báo lỗi đó có hiển thị hay không. Hy vọng rằng bạn có thể tùy chỉnh và nhận được thông báo xác thực chính xác hiển thị.

+0

Cảm ơn Alistair lời khuyên của bạn đã nhắc tôi http://framework.zend.com/apidoc/1.10/ nơi tôi tìm thấy tất cả các const có thể. – Alexandr

0

@Alistair, không hoạt động đề xuất của bạn tại đây.

// Email 
    $email = new Zend_Form_Element_Text('email'); 

    $notempty = new Zend_Validate_NotEmpty(); 
    $email_validate = new Zend_Validate_EmailAddress(); 
    $email_validate->setMessages(
     array(
      Zend_Validate_EmailAddress::INVALID => 'Please enter in a valid email address in the format [email protected]', 
      Zend_Validate_EmailAddress::INVALID_FORMAT => 'Error with format', 
      Zend_Validate_EmailAddress::INVALID_HOSTNAME => 'Error with hostname', 
      Zend_Validate_EmailAddress::INVALID_LOCAL_PART => 'Error with Local Part', 
      Zend_Validate_EmailAddress::INVALID_MX_RECORD => 'Error with MX record', 
      Zend_Validate_EmailAddress::INVALID_SEGMENT => 'Error with Segment' 
    ) 
); 

    $email->addValidator($notempty , true, $email_validate) 
     ->setRequired(false); 
    // Submit 
    $submit = new Zend_Form_Element_Submit('submit'); 
+0

Nếu bạn thêm một số trình xác nhận hợp lệ, bạn phải sử dụng $ email-> addValidators (mảng (các đối tượng thực hiện "Zend_Validate_Interface")) hoặc nếu bạn sử dụng addValidator, bạn phải thêm một trình xác nhận hợp lệ – Alexandr