2010-05-14 5 views
1

빈 값이 없거나 동일한 문자열을 포함하지 않도록 양식에 두 개의 텍스트 필드가 있습니다.Zend_Validate_Abstract 사용자 정의 유효성 검사기가 올바른 오류 메시지를 표시하지 않음

내가 작성한 사용자 정의 유효성 검사기는 Zend_Validate_Abstract를 확장하고 올바른 오류 메시지를 다시 전달한다는 점에서 올바르게 작동합니다. 이 경우 isEmpty 또는 isMatch입니다.

그러나 설명서에는 addErrorMessages를 사용하여 표시 할 올바른 오류 메시지를 정의한다고 나와 있습니다. 이 경우

난 형태 필드
->addErrorMessages(array("isEmpty"=>"foo", "isMatch"=>"bar")); 

붙어있다.

내가 읽은 모든 것에 따르면 isValid()에서 "isEmpty"를 반환하면 내 오류 메시지는 "foo"를 읽고 "isMatch"를 반환하면 "bar"를 읽어야합니다.

나는이 문제를 다루지 않습니다. 유효하지 않은 false를 반환하면 $ this -> _ error()를 설정하더라도 내 오류 메시지는 "foo"또는 오류 메시지 배열의 인덱스 [0]에있는 모든 것을 표시합니다.

errorMessages를 정의하지 않은 경우 디스플레이로 전달한 오류 코드가 표시되고 전달 된 내용에 따라 적절한 코드가 표시됩니다.

오류 코드를 잡아 내 양식에 올바른 오류 메시지를 표시하려면 어떻게합니까?

제대로 구현할 때까지 구현 한 수정 프로그램은 사용자 지정 유효성 검사기의 오류 코드로 전체 메시지를 다시 전달합니다. 이 인스턴스에서 작동하지만 오류 메시지는이 페이지에만 해당되며 실제로 코드를 다시 사용할 수 없습니다. 중 오류가 발생하는 경우, 마지막 오류 메시지가 설정할 수

->setRequired("true") 
->addValidator("NotEmpty") 
->addErrorMessage("URL May Not Be Empty") 
->addValidator([*customValidator]*) 
->addErrorMessage("X and Y urls may not be the same") 

그러나 다시 : 이미 시도

것 : 경기에 대한 내 사용자 지정 유효성 검사기는 검사 있도록 은 이미 검증 체인을 시도 오류가 무엇인지에 관계없이 표시합니다.

여기에서 어디로 가야할지 모르겠습니다.

제안 사항?

답변

2

설명서를 잘못 해석 한 것 같습니다. It says

addErrorMessage ($ 메시지)는 : 형태 유효성 검사 오류에 표시 할 오류 메시지를 추가합니다. 이 메시지는 번으로 두 번 이상 호출 할 수 있으며 새 메시지는 이 스택에 추가됩니다.

addErrorMessages (배열 $ 메시지) : 양식 유효성 검사 오류에 표시 여러 오류 메시지를 추가 할 수 있습니다.

이 함수들은 양식 스택에 사용자 정의 오류 메시지를 추가합니다.

유효성 검사가 실패 할 때 유효성 검사 오류 메시지를 표시하려면 유효성 검사기 내에 메시지를 구현해야합니다.

즉.

const EMPTY = 'empty'; 

protected $_messageTemplates = array(
    self::EMPTY => "Value is required and can't be empty", 
); 

public function isValid($value) 
{ 
    if(empty($value)) { 
    $this->_error(self::EMPTY); 
    return false; 
    } 

    return true; 
} 

이 방법, 유효성 검사가 실패한 후, 당신은 $validator->getMessages()를 사용 $validator->getErrors()를 사용하여 오류 코드 및 오류 메시지를 얻을 수 있습니다.

$_messageTemplates을 올바르게 정의한 경우 Zend_Form은 자동으로 오류 코드 대신 오류 메시지를 사용하여 인쇄합니다.

희망이 도움이됩니다.

+0

감사합니다. michal! 나는 가능한 한 빨리 그것을 줄 것이다. –