Zend - 在注册表中找不到插件

时间:2012-03-23 14:39:35

标签: php forms zend-framework plugins validation

我一直在研究这个问题几个小时,但是徒劳无功......我有一个Zend应用程序,这些是两个类:

class Application_Form_Disciplines extends Zend_Form {

    public function init() {
      $this->addElementPrefixPath('My_Validate', '../library/validate', 'validate');
      ...
      $credits->addValidator('My_Validate_NumericBetween');
      ...
    }
}

class My_Validate_NumericBetween extends Zend_Validate_Abstract
{
    ...
}

问题是,当我提交表单时,我在注册表中找不到“按姓名插入'My_Validate_NumericBetween';使用的路径:My_Validate_:../ library / validate / Zend_Validate_:Zend / Validate /”。名为“My_Validate_NumericBetween”的类可在project / library / validate中找到。我在网上尝试了很多东西,但没有任何效果。

谢谢!

3 个答案:

答案 0 :(得分:1)

尝试:

$this->addElementPrefixPath('My_Validate', APPLICATION_PATH . '/../library/validate', 'validate');
$credits->addValidator('NumericBetween');

旁注:典型的PSR-0类名/文件方案是将类My_Validate_NumericBetween存储在文件library/My/Validate/NumericBetween.php中,而不是library/validate/NumericBetween.php(我推断你正在使用)。

答案 1 :(得分:0)

将它放在Bootstrap.php中,它将来会为你节省一些打字

Zend_Loader_Autoloader::getInstance()->registerNamespace('My_');

答案 2 :(得分:0)

将文件重命名为NumericBetween.php

类名应保留为My_Validate_NumericBetween