2008-10-08 59 views
9

我有如下Zend框架應用程序結構:自定義過濾器/校驗Zend框架

/application 
/library 
    /Zend 
    /Core 
     /Filter 
      /MyFilter.php 
     /Validator 
      /MyValidator.php 

我想提出的自定義過濾器和校驗在各自的文件夾,並有使用它們時自動加載。但是,我無法弄清楚如何最好地完成這一點。

我需要的解決方案以這種方式使用的Zend_Filter_Input工作:

$filters = array(
    'month' => 'Digits', 
    'account' => 'StringTrim', 
    'other' => 'MyFilter' 
); 

$validators = array(
    'account' => 'Alpha', 
    'other' => 'MyValidator' 
); 

$inputFilter = new Zend_Filter_Input($filters, $validators); 

我已經知道:

  • Core_Filter_MyFilter實現Zend_Filter_Interface,
  • 顯然,過濾器和校驗已經在我包括路徑。

回答

18

我設計並實現Zend_Filter_Input回在2007年

您可以添加新的類的前綴,以幫助加載自定義過濾器和校驗器類。缺省情況下,Zend_Filter_Input搜索的前綴爲"Zend_Filter""Zend_Validate"。在運行對象的isValid()或其他方法

$inputFilter->addNamespace('Core_Filter'); 

:試試這個。

或者,你也可以通過一個新的類前綴字符串的選項數組中,第四個參數的構造函數Zend_Filter_Input

$options = array('inputNamespace' => 'Core_Filter'); 
$inputFilter = new Zend_Filter_Input($filters, $validators, $data, $options); 

又見documentation我寫Zend_Filter_Input

+0

非常好!我花了幾個小時閱讀文檔,但我一定錯過了這個被提及的事情。謝謝! – leek 2008-10-08 23:58:26