2013-07-04 51 views
0

我的自定義Zend表單篩選器類未加載。Zend表單自定義篩選器類未找到

定製過濾器類名稱是:SF_Filter_AlnumDashes和它駐留到: 庫/ SF /篩選/ AlnumDashes.php。

我已經配置自動加載的「SF_」命名空間到的application.ini:

autoloadernamespaces[] = "SF_" 

但是當我嘗試的Zend表單創建過程中加載類,我得到錯誤的類coudn't找到: 致命錯誤:類「AlnumDashesUnderscore」中找不到...

下面是導致錯誤在Zend Form類代碼:

class Admin_Form_Product_Generalinfo extends SF_Form_Abstract { 

    public function init() { 

     //set ID Attribute on the form element 
     $this->setAttrib('id', 'product_general_info'); 

     $elementPrefixPaths = array(
       array(
        array(
         'prefix' => 'SF_Filter', 
         'path' => 'SF/Filter/', // 'application/validators' in your case 
         'type' => 'filter', 
        ) 
       ) 
      ); 
     $this->addElementPrefixPaths($elementPrefixPaths); 

    $this->addElement('text', 'title', array(

      'filters' => array('StringTrim', 'StripTags'), 
      'validators' => array(
     array('StringLength', true, array(2, 250)), 
      ), 
      'required' => true, 
      'label' => 'Title', 
      'attribs' => array(
       'id' => 'title', 
       'class' => 'inputbox' 
      ) 

    )); 

     $this->getElement('title')->addFilter(array(new AlnumDashesUnderscore(), array(1))); 

}

我將其他類放入成功加載的「SF_」命名空間中,從控制器調用它們並沒有任何問題。

回答

0

該類被定義爲SF_Filter_AlnumDashes,但您試圖創建一個新實例AlnumDashesUnderscore。這些類的名稱需要匹配:

$this->getElement('title')->addFilter(array(new SF_Filter_AlnumDashes(), array(1))); 
+0

那麼,如果我不喜歡,我得到這個異常: 異常信息: 消息:提供給addFilter無效的過濾器;必須是字符串或Zend_Filter_Interface – vlatkorun

+0

好吧,那是一個單獨的問題。過濾器必須實現'Zend_Filter_Interface',所以你需要相應地修改你的自定義過濾器。 –

+0

Filter Class實現Zend_Filter_Interface: 'class SF_Filter_AlnumDashes implements Zend_Filter_Interface' – vlatkorun