zend framework custom validation classes

不问归期 提交于 2019-12-24 02:23:38

问题


I'm writing a custom validator that is going to check for the existence of an email such that if it already exists in the database, the form is not valid. I'm having a hard time figuring out helper paths and namespaces for custom Zend_Validation classes.

I'd like to call the class My_Validate_EmailUnique but I keep getting error messages such as: there is an error exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'My_Validate_EmailUnique' was not found in the registry; used paths: My_Validate_: /var/www/site/arc/helpers/

The class looks like this:

    <?php
class My_Validate_EmailUnique extends Zend_Validate_Abstract
{
    const EMAIL_UNIQUE = 'notMatch';

Can someone help me with where I register for the Zend_Form to look for custom validators?


回答1:


You can directly add the validator to your form element. There is no need to write a custom validator for this.

In your form:



$element->addValidator(new Zend_Validate_Db_NoRecordExists('mytablename', 'myemailcolumnname'));



回答2:


+1 for Db_NoRecordExists - the docs have an example showing exactly what you want to do.

Otherwise, custom validators can be loaded like regular library classes, so try placing it on your include path.

/library/My/Validate/EmailUnique.php


You can also add a new entry to the Zend_Application_Module_Autoloader if you want to keep it in your application folder, as opposed to your library:

// Bootstrap.php
protected function _initAutoloader()
{
    $autoloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'My_',
        'basePath'  => dirname(__FILE__),
    ));

    $autoloader->addResourceType('validator', 'validators', 'Validate')

    return $autoloader;
}

And put the class My_Validate_EmailUnique in:

/application/validators/EmailUnique.php

I've never registered a custom validator as a plugin before, so I can't help you there sorry.



来源:https://stackoverflow.com/questions/1811085/zend-framework-custom-validation-classes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!