0

我没有自定义 Zend_Form,我只是在 ini 文件中声明了所有元素。从 ini 文件创建 Zend_Form 没有问题,但是在我的 ini 文件中使用我自己的自定义验证器时遇到问题。它总是返回 Not Found In Registry 错误。

目前,我的代码是这样的。

[Bootstrap]

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
            'namespace' => 'MY',
            'basePath'  => dirname(__FILE__)
        ));

$resourceLoader->addResourceType('validator', 'forms/validate/', 'Form_Validate');

[ini file]
form.elements.new_password.options.validators.password.validator = "Password"

[Custom Validator]
<?php 

class MY_Form_Validate_Password extends Zend_Validate_Abstract
{
......

请告诉我我在这里缺少什么。谢谢!

4

1 回答 1

0

这是一个过度思考的案例:

我假设您使用的是相当新的 ZF1.x 版本(v1.10 和更新版本)。

你有一个文件叫做project/application/configs/application.ini

在标准的 application.ini 中是以下行:

includePaths.library = APPLICATION_PATH "/../library"

这告诉我们我们所有的库代码(一个自定义验证器限定)都属于这个路径的目录。

还有一行:

autoloaderNamespaces[] = "MY_"

这告诉我们库的名称(定义 /library 下面的目录)。

所以我们的自定义验证器MY_Form_Validate_Password将位于:

project
    /library
        /MY 
            /Form
                /Validate
                    Password.php

不需要其他任何东西,只有当您要执行 Zend Framework 未预料到的事情时才需要所有引导代码,而且验证器通常不会注册为资源。

该类可以称为

$validator = new MY_Form_Validate_Password();

像往常一样,任何其他访问方法也应该起作用。

于 2013-05-13T10:41:28.413 回答