0

カスタム Zend フォーム フィルター クラスが読み込まれません。

カスタム フィルター クラスの名前はSF_Filter_AlnumDashesで、library/SF/Filter/AlnumDashes.php にあります。

"SF_" 名前空間の autoload を application.ini に設定しました。

autoloadernamespaces[] = "SF_"

しかし、Zend フォームの作成中にクラスをロードしようとすると、クラスが見つからないというエラーが表示されます: 致命的なエラー: クラス '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_」名前空間に他のクラスがあり、正常にロードされ、コントローラーから問題なく呼び出されます。

4

1 に答える 1

0

クラスは として定義されてSF_Filter_AlnumDashesいますが、 の新しいインスタンスを作成しようとしていますAlnumDashesUnderscore。これらのクラス名は一致する必要があります。

$this->getElement('title')->addFilter(array(new SF_Filter_AlnumDashes(), array(1)));
于 2013-07-04T12:24:05.530 に答える