1

我有一個帶允許字符列表的問題字段:A-Z,0-9,冒號(:),問號(?),逗號(,),連字符( - ),撇號(')。 我有工作正常,在時尚的正則表達式:如何爲自定義錯誤消息的zend表單元素編寫自定義驗證器?

$question->addValidator('regex', true, array(<regular expresstion>)) 

的默認錯誤信息是一樣的東西「」」不匹配阻止圖形'

我想寫一個自定義錯誤消息說'不允許在這個領域'

是否有一個簡單的方法來使用我缺少的現有zend組件做到這一點?

正在編寫自定義驗證程序是實現我想要實現的唯一方法嗎? 如果是的話,我該如何編寫一個自定義的驗證器(我查看了文檔,並不太明白我如何定製錯誤信息) 如果還有其他方法,我也會非常感謝。

感謝您花時間回答這個問題!

回答

2

是的,自定義驗證器可以滿足您的需求。關於如何寫它,請參考manual

至於代碼片段,這裏是用於驗證的僱主ID簡單的驗證器(部分)

protected $_messageTemplates = array(
    self::UNIQUE => 'The id provided is already in use', 
    ); 

public function isValid($value, $context = null) 
{ 
    $this->_setValue($value); 

    $personnel = new Personnel(); 
    $isValid = true; 

    if($personnel->isExistingIdEmployee($value) && ($value != $this->_id)) { 
     $this->_error(self::UNIQUE); 
     $isValid = false; 
    } 

    return $isValid; 
}