2009-07-15 23 views
0

我使用Zend_Filter_Input驗證表單數據,並希望自定義錯誤消息,如果用戶不輸入值。每個字段得到不同的錯誤信息是很重要的。的Zend_Filter_Input和空值

與Zend框架1.8.0我用下面的數組的Zend_Filter_Input的「驗證」參數:

$validators = array(
    'salutation' => array(
     new Zend_Validate_NotEmpty(), 
     Zend_Filter_Input::MESSAGES => array(
      Zend_Validate_NotEmpty::IS_EMPTY => "Please enter a salutation" 
     ) 
    ), 
    /* ... */ 
); 

自從我升級到ZF 1.8.4,我總是空的默認消息字段(「您必須爲字段'%field%'提供非空值」)。很顯然Zend_Filter_Input不再調用Zend_Validate_NotEmpty驗證器,如果該字段爲空。

有沒有辦法改變這種行爲或另一種方式來獲得每個領域的自定義「空」消息?

+0

你真的混合過濾器和驗證?他們有不同的purpouses ... – 2009-07-15 18:07:22

+0

而你正在使用Zend_Filter_Input :: MESSAGES不驗證消息 - 這可能是問題。 – 2009-07-15 18:07:54

回答

1

看來Zend_Filter_Input在處理空字段時改變了它的行爲。空字段永遠不會被規則驗證器處理。如果一個字段爲空並且allowEmpty設置爲true,則不會使用您的驗證器。如果該字段爲空且allowEmpty設置爲false,則設置空值的默認消息。目前無法爲特定字段自定義此消息。

+0

使用Zend Framework 1.8.4我仍然得到默認消息。 – uberboom 2009-07-21 12:20:01

0

試試這個:

$validators = array(
     'salutation' => array('NotEmpty', Zend_Filter_Input::MESSAGES => 'Please enter a salutation') 
     ); 

我不知道爲什麼,但似乎他們改變了常量「的isEmpty」與「NotEmpty」(不包括其在Zend_Validate_NotEmpty類) 。有時候我會跟Zend一起瘋狂。 :)