zend框架自定义验证类

时间:2009-11-28 00:12:28

标签: zend-framework

我正在编写一个自定义验证程序,用于检查是否存在电子邮件,如果它已存在于数据库中,则该表单无效。我很难找到自定义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以寻找自定义验证器吗?

2 个答案:

答案 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

我以前从未将自定义验证器注册为插件,所以我无法帮助您。