我没有自定义的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
{
......
请告诉我这里缺少什么。谢谢!
答案 0 :(得分:0)
这是一个过度思考的案例:
我将假设您使用的ZF1.x版本相当新(v1.10及更新版本)。
您有一个名为project/application/configs/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();
像往常一样,任何其他访问方法也应该有效。