0

我的自定义 Zend 表单过滤器类没有被加载。

自定义过滤器类名称为:SF_Filter_AlnumDashes,它位于:library/SF/Filter/AlnumDashes.php。

我已经为 application.ini 配置了“SF_”命名空间的自动加载:

autoloadernamespaces[] = "SF_"

但是,当我在 Zend Form 创建期间尝试加载该类时,我得到了无法找到该类的错误: 致命错误:在...中找不到类“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 回答