我正在编写一个自定义验证程序,用于检查是否存在电子邮件,如果它已存在于数据库中,则该表单无效。我很难找到自定义Zend_Validation类的辅助路径和命名空间。
我想调用类My_Validate_EmailUnique,但我不断收到错误消息,例如: 有一个错误异常'Zend_Loader_PluginLoader_Exception',在注册表中找不到消息'按姓名插件'My_Validate_EmailUnique';使用路径:My_Validate_:/ var / www / site / arc / helpers /
该课程如下:
<?php
class My_Validate_EmailUnique extends Zend_Validate_Abstract
{
const EMAIL_UNIQUE = 'notMatch';
有人可以帮我注册Zend_Form以寻找自定义验证器吗?
答案 0 :(得分:5)
您可以直接将验证器添加到表单元素中。没有必要为此编写自定义验证器。
以您的形式:
$element->addValidator(new Zend_Validate_Db_NoRecordExists('mytablename', 'myemailcolumnname'));
答案 1 :(得分:2)
+1 Db_NoRecordExists
- 文档中有一个示例,显示您想要做什么。
否则,可以像常规库类一样加载自定义验证器,因此请尝试将其放在包含路径上。
/library/My/Validate/EmailUnique.php
如果您希望将新条目保留在应用程序文件夹中(而不是库),也可以向Zend_Application_Module_Autoloader
添加新条目:
// Bootstrap.php
protected function _initAutoloader()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'My_',
'basePath' => dirname(__FILE__),
));
$autoloader->addResourceType('validator', 'validators', 'Validate')
return $autoloader;
}
将课程My_Validate_EmailUnique
放入:
/application/validators/EmailUnique.php
我以前从未将自定义验证器注册为插件,所以我无法帮助您。