在INI文件中使用Custom Zend Validator

时间:2013-05-13 01:51:12

标签: php zend-framework ini customvalidator

我没有自定义的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
{
......

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

1 个答案:

答案 0 :(得分: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();
像往常一样,任何其他访问方法也应该有效。