2010-03-15 83 views
6

自定義錯誤消息有意義,我在我的表單驗證文本字段,如下所示:爲Zend的正則表達式驗證

$name = new Zend_Form_Element_Text('name'); 

$name->setLabel('First Name:') 
     ->setRequired(true) 
     ->addFilter(new Zend_Filter_StringTrim()) 
     ->addValidator('regex',true,array('/^[(a-zA-Z0-9)]+$/')) 
     ->addErrorMessage('Please enter a valid first name'); 

我試圖做到的是 - 我怎麼可以顯示一個有意義的錯誤消息? 例如:如果名字是'XYZ-',我怎麼顯示' - 不允許名字。'

有沒有一種方法可以訪問正則表達式失敗的字符? 你會推薦一些其他的東西嗎?

我想過寫一個自定義驗證器,但正則表達式非常簡單,所以我沒有看到這一點。 我無法在任何地方找到zend'regex'驗證程序的體面文件。如果我不覆蓋默認的錯誤信息,我會簡單地得到類似於: ';;; hhbhbhb'與模式不匹配'/^[(a-zA-Z0-9)] + $/' - 我顯然不想顯示給用戶。

我很感激你的意見。

回答

1

如何通過非專業人士的方式告訴用戶您的限制是什麼?像

Error: Only the letters A to Z and numbers are allowed. 

(這使我爲何第一名稱可以包含數字的問題...)

+0

嗨,這只是一個例子......可以是任何領域(不一定是名字),但是是我面對多數民衆贊成的問題的一個例子.. – 2010-03-16 15:19:16

+1

我相信他問*如何*設置消息,不是要設置什麼信息。 – 2010-07-19 14:44:07

+0

@馬庫斯唐寧:我不這麼認爲。她已經知道如何設置一條消息(請參閱她的示例代碼),並且她想知道如何生成針對用戶輸入「定製」的消息。我建議反對。 – 2010-07-19 14:56:42

15

對於Zend的非標準驗證您的自定義錯誤消息(S)的messages陣列只是傳遞給驗證,而實例化。它是一個數組,其中的鍵是錯誤類型(請參閱更多),值是錯誤消息。

->addValidator('regex', true, 
         array(
          'pattern'=>'/^[(a-zA-Z0-9)]+$/', 
          'messages'=>array(
           'regexNotMatch'=>'Your own custom error message' 
          ) 
         ) 
) 

要查看所選驗證器的其他錯誤類型的錯誤鍵,可以參考它的源代碼。 對於regex驗證器,它位於{Zend Framework Library} /Zend/Validate/Regex.php。

祝你好運在驗證:)。